【盤一盤】009 js快速行之有效的去重數據操作

很多時候,我們需要去除對象當中的重復的數據,但網絡上處理重復數據的方法多是通過indexOf( )來除去,但有時,我們只是因為有某個屬性相同而需要去重。

案例

dataInfo = [
  { name: "入口",value: [100, 20],img: "") },
  { name: "展廳", value: [90, 60], img: "") },
  { name: "演示廳", value: [55, 60], img: "./../logo.png") },
  { name: "教室", value: [20, 70], img: "") },
  { name: "演示廳", value: [85, 90], img: "./img.png") }
]

代碼

如上,我需要清除的數據是重復的name數據“演示廳”。如果使用indexOf永遠得到的數據值是-1
所以,我調整了一些思路,如下源碼:

/**
     * js快速行之有效的去重數據操作
     * @param  {object} array 數組對象
     * @param  {string} name 去重的判斷對象
     * @return {string} n 返回數組
     */
    uniqueArr(array, name){
      let bb = JSON.stringify(array);
      var n = JSON.parse(bb); // 一個新的臨時數組
      // 遍歷當前數組
      for (let i=0, len=n.length; i<len; i++) {
        for (let j=i+1; j<len; j++) {
          if (n[i][name] == n[j][name]) {
            n.splice(j, 1);
            // splice 會改變數組長度,所以要將數組長度 len 和下標 j 減一
            len--;
            j--;
          }
        }
      }
      return n;
    }

接收返回這個函數即可。
當然,去重的方法有很多種,需要根據具體業務來操作。

如果這種方法無法解決你的問題,推薦閱讀:

JavaScript數組去重(12種方法,史上最全)

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Swift1> Swift和OC的區別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,135評論 1 32
  • ??自從 2000 年以來,Web 開發方面的種種規范、條例正在高速發展。Web 開發過去曾是荒蕪地帶,里面東西還...
    霜天曉閱讀 525評論 0 1
  • 為了自己,為了自己喜歡的事。堅持,
    俗不可耐的俗閱讀 238評論 0 0
  • 師父就是師父,教法界的專家果然名不虛傳,每一個問題的提出都一針見血。 我不知道自己今天哪來的這種勇氣和自信,居然在...
    章琳玖_dd35閱讀 119評論 0 1