最近時常在開舊專案把之前寫好的 js 方法 copy 到新專案
所以趁這次機會,陸陸續續把常用到的小方法都記錄在這篇文章
以後只要持續更新這篇,就不用一直開專案找了
如果有其他更好的寫法也歡迎討論
目前開發環境是
ES5, Angular 1.X, TypeScript 2.5, underscore 1.6
有時候會在前端讓使用者調整排序
通常是用一個欄位紀錄 rank 或者直接使用 array 的 index
我大部分時間都直接讓使用者直接調整 object in array 的 index
最後要寫回後端時,再根據當下的 index 寫入 object 的 rank field
所以會需要一個方法,可以決定要將 array 中的某個 object 往前或往後一個 index
當然如果覺得每次都要 call function 不太方便
也可以寫成 Array.prototype
下面範例是用 TypeScript 寫的
var moteItem = function(from:number, to:number, arr:Array<any>):void{
arr.splice(to, 0, arr.splice(from, 1)[0]);
}
var up = function (arr:Array<any>, index: number): void {
if (index > 0) {
moveItem(index, index - 1, arr);
}
var down = function (arr:Array<any>, index: number): void {
if (index < (arr.length - 1)) {
moveItem(index, index + 1, arr);
}
}
之後就可以對任何 Array 進行調整順序
這個就比較單純,之前陣列的介紹也有提過這方法
var removeItem = function(arr:Array<any>, index:number): void {
arr.splice(index,1);
}
如果有完整 object 的話
當然也是可以利用 underscore 的 _.without 或是 lodash 的 _.remove 來達成一樣的效果
有時候會需要把 object 先複製一份保留原始狀態
所以可以利用 underscore 的 _.clone 來快速完成複製的效果
複製出去後就不會影響到原先的 object
目前常在不同案子用到的大概就這幾個
現在大部分都在 angular + typeScript
JQuery 也有些常用的方法,等有遇到再補充上來