iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 17
0
自我挑戰組

半路出家的工程師重新認識 JavaScript系列 第 17

17. 個人筆記之常複製的方法整理集

  • 分享至 

  • xImage
  •  

前言

最近時常在開舊專案把之前寫好的 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 進行調整順序


陣列透過 index 移除物件

這個就比較單純,之前陣列的介紹也有提過這方法

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 也有些常用的方法,等有遇到再補充上來


上一篇
16. Speaking JavaScript - 加班中尚未有靈感
下一篇
18. (番外篇) 五分鐘實作 C# 介接 OpenData(政府行政機關辦公日曆表)
系列文
半路出家的工程師重新認識 JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言