重複排除を探します

私は何のタイトルを知らないので、パートナーの小グループの交流の原因は、このような需要が発生したものです。

次のように元の言葉は、次のとおりです。

二つの配列は、あるM = [a、b]は、N = [{キー:名前: 'トム'}、{キー:bは、名称: 'ジェリー'}、{キー:C、名称: '結婚' }、{キー:B、名称: 'ジェリー'}]、変数を定義し、聞かせnewArry = n.filter((E)=> {})を達成する方法であろう、[{キーに等しいnewArryそう:名前:「トム」}、{キー:B、名前:「ジェリー」}]、および、newArryを再アイデアについての指導を追求する必要性、感謝

記事の純水を読んでいないの答えの首長て参照してください。

最初の行と行と需要:

  • 重複排除アレイ
  • 配列内の最初の項目が対応する戻り

など、私の最初のアイデアは、横断するネストされたループを使用していた、この質問を参照してください、しかしES6は私たちに多くの便利な構文や機能を与えるArray.prototype.map()、、 、Array.prototype.filter() これらのAPIが大幅にメソッドを使用し、問題を解決するために、当社の効率を向上させることができますES6 MDNまたはルアンYifeng教師の取得を参照してくださいArray.prototype.reduce()Array.prototype.includes()

重複排除アレイ

let hash = {}; 
let newN = n.reduce(function(item, next) { 
hash[next.key] ? '' : hash[next.key] = true && item.push(next); 
return item 
}, [])
复制代码

対応する項目を探します

let newArray = newN.filter(el=>{
  if(m.includes(el.key)) {
    return el
  }
})
复制代码

完全なコード:

let m=['a','b'];
let n=[{key:'a', name: 'tom'},{key:'b', name: 'jerry' }, {key:'c', name: 'marry' },{key:'b', name: 'jerry' }];
// 新数组满足两个条件:
//每个元素具有唯一key(先去重)
//查找key与m数组中的元素匹配

let hash = {}; 
let newN = n.reduce(function(item, next) { 
hash[next.key] ? '' : hash[next.key] = true && item.push(next); 
return item 
}, [])
let newArray = newN.filter(el=>{
  if(m.includes(el.key)) {
    return el
  }
})
console.log(newArray)
//[{key:'a', name: 'tom'},{key:'b', name: 'jerry' }]
复制代码

水の終了

ます。https://juejin.im/post/5d0bbc0cf265da1b904be871で再現

おすすめ

転載: blog.csdn.net/weixin_33795743/article/details/93180533