JS數組去重

數組去重方法
html

簡單數組去重:segmentfault

{
      const a = [1, 3, 4, 1, 5, 2, 6, 7, 8, 3]
      const b = a.filter((item, index, self) => self.indexOf(item) === index)
      console.log(b) //[1, 3, 4, 5, 2, 6, 7, 8]
    }

實例1根據indexOf去重,indexOf的好處就是返回的是首次出現的位置,這樣後面即便出現的值同樣,也只能返回第一次出現的索引,固然這個只適用於簡單的數組數組

對象數組去重:code

const objArr = [{
        name: '名稱1'
      },{
        name: '名稱2'
      },{
        name: '名稱3'
      },{
        name: '名稱1'
      },{
        name: '名稱2'
      }]

      const obj = {}
      const newObjArr = []
      for(let i = 0; i < objArr.length; i++){
         if(!obj[objArr[i].name]){
          newObjArr.push(objArr[i]);
          obj[objArr[i].name] = true
         }
      }

      console.log(newObjArr)

結果爲:htm

[{
        name: '名稱1'
      },{
        name: '名稱2'
      },{
        name: '名稱3'
      }]

還能夠用reduce來處理,以下:對象

const objArr = [{
        name: '名稱1'
      },{
        name: '名稱2'
      },{
        name: '名稱3'
      },{
        name: '名稱1'
      },{
        name: '名稱2'
      }]
      const obj = {}
      const newObjArr =  objArr.reduce((prev, curr)=>{
        obj[curr.name] ? true : obj[curr.name] = true && prev.push(curr);
        return prev
      }, [])
      console.log(newObjArr)

結果爲:索引

[{
        name: '名稱1'
      },{
        name: '名稱2'
      },{
        name: '名稱3'
      }]

兩個數組之間去重:get

var arr3 = [{
        id: 1,
        name: 'lily'
    }, {
        id: 2,
        name: 'hz'
    }, {
        id: 3,
        name: '123'
    }, {
        id: 4,
        name: '321'
    }, {
        id: 5,
        name: 'aa'
    }]

    var other = [{
        id: 1,
        name: 'lily'
    }, {
        id: 2,
        name: 'hz'
    }]

    isOther = (x, arr) =>{
      for(var i = 0;i<arr.length;i++){
         if(x === arr[i].id){
           return true;
         }
      }

      return false;
    }

    console.log(arr3.filter((item)=>!isOther(item.id, other)));

結果爲:it

[{
        id: 3,
        name: '123'
    }, {
        id: 4,
        name: '321'
    }, {
        id: 5,
        name: 'aa'
    }]

上面例子中,在數組arr3去除掉跟數組isOther中相同的元素,把不存在在isOther數組中的元素篩選出來console

來源:http://www.javashuo.com/article/p-dpuoatmv-da.html

相關文章
相關標籤/搜索