JS數組對象合併之後去重

需求:這是預提交所有挑撥設備頁面,點擊選擇設備打開條件篩選設備。
在這裏插入圖片描述
在選擇設備頁面,選擇出需要挑撥的設備,再把已經選擇的設備批量添加到預備調撥的列表中,每次批量添加的時候,需要去掉之前已經選擇過的設備,避免重複項。
在這裏插入圖片描述

解決思路一:

連個數組雙重循環對比,如果出現相同設備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一些用法:

  1. 常用於數組求和,求乘積
  2. 計算數組中每個元素出現的次數
  3. 對象裏的屬性求和
  4. 數組去重
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章