需求:這是預提交所有挑撥設備頁面,點擊選擇設備打開條件篩選設備。
在選擇設備頁面,選擇出需要挑撥的設備,再把已經選擇的設備批量添加到預備調撥的列表中,每次批量添加的時候,需要去掉之前已經選擇過的設備,避免重複項。
解決思路一:
連個數組雙重循環對比,如果出現相同設備ID就刪除掉,然後再連接兩個數組,但是覺得麻煩,所以不推薦。
解決思路二:
先合兩個數組,再對數組進行去重。
/*
* 確認已選擇放入預備調撥的設備列表
* */
confirm () {
//連接兩個數組
let data = this.tableParams.totalData.concat(
this.tableChoseParams
);
//刪除重複選擇的設備
let hash = {}
data = data.reduce((item, next) => {
if (!hash[next.id]) {
hash[next.id] = true
item.push(next)
}
return item
}, [])
this.tableParams.totalData = data
//前端分頁處理
this.tableParams.data = this.tableParams.totalData.slice(0, 10)
this.dialogDeviceVisible = false;
}
- concat() 方法用於連接兩個或多個數組。
arrayObject.concat(arrayX,arrayX,......,arrayX)
該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。
- reduce() 方法接收一個函數作爲累加器,數組中的每個值(從左到右)開始縮減,最終計算爲一個值。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
reduce一些用法:
- 常用於數組求和,求乘積
- 計算數組中每個元素出現的次數
- 對象裏的屬性求和
- 數組去重