javascript - 一個是數組,一個是對象,要怎麼比較去重?
仅有的幸福
仅有的幸福 2017-07-05 10:53:25
0
4
798
var arr=[{'id':1,'name':1},{'id':2,name:2},{'id':3,'name':3}]; var obj = {'id':2,'name':2};

請問這個arr 和obj怎麼做對比,發現重複id2後,去掉arr這個陣列物件id:2,並產生一個新的陣列?

仅有的幸福
仅有的幸福

全部回覆 (4)
给我你的怀抱

用陣列的filter過濾一下就產生新的陣列了。
另外,題目裡的 數組第二個'id:2'語法錯誤,引號位置不對

var res = arr.filter(function(e){ return e.id!=obj.id })

下面是我的腦洞:萬一題主要的是鍵值對都重複才過濾呢…(有可能想太多了)

考慮到可能你還想保證數組裡面元素的鍵值對跟obj的鍵值對必須完全一樣的話:可以考慮這樣

var arr=[{'id':1,'name':1},{id:2,name:3},{'id':3,'name':3}]; var arr2=[{'id':1,'name':1},{id:2,name:2},{'id':3,'name':3}]; var obj = {'id':2,'name':2}; var res = arr.filter(function(e){// var result = true; //作为过滤标识 for(var key in obj){//遍历obj的键值 if(e[key]!=obj[key]){//如果出现键值相同当值不同,就不算重复 result = true; break; } //如果上面条件不通过,那就表示键值重复 result = false; }//遍历到最后,如果键值都重复,那result肯定是false,否则必然出现result=true的情况 return result; }); var res2 = arr.filter(function(e){ var result = true; for(var key in obj){ if(e[key]!=obj[key]){ result = true; break; } result = false; } return result; });
    洪涛

    雷雷

      迷茫

      雷雷

        为情所困

        Array.prototype.filter()

        雷雷
          最新下載
          更多>
          網站特效
          網站源碼
          網站素材
          前端模板
          關於我們 免責聲明 Sitemap
          PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!