ホームページ  >  記事  >  バックエンド開発  >  配列内のオブジェクトを与えることからjsのreduce()を再考してください

配列内のオブジェクトを与えることからjsのreduce()を再考してください

一个新手
一个新手オリジナル
2018-05-19 17:05:042402ブラウズ

そのような配列があるとします:

let person = [
     {id: 0, name: "小明"},
     {id: 1, name: "小张"},
     {id: 2, name: "小李"},
     {id: 3, name: "小孙"},
     {id: 1, name: "小周"},
     {id: 2, name: "小陈"},   
]

同じ ID 2 を持つ 2 つのオブジェクトなど、配列内の重複する ID を持つオブジェクトを削除したいです -

{id: 2, name: "小李"}和{id: 2, name: "小陈"} (去掉任何一个都可以)

どうすればよいでしょうか?

実際、配列オブジェクトの場合、従来の重複排除メソッドは無力であり、forEach() や filter() などの反復メソッドは使いにくいです。真にエレガントな重複排除を実現できるのは、ES5 で新しく追加されたメソッドです。 reduce()

reduce() メソッドは最初のパラメータとしてコールバック関数を受け取り、コールバック関数は次の 4 つのパラメータを受け取ります: 最初の値または cur =>次の値で重ね合わせます。

2. 重ね合わせる次の値

4. > 配列自体;

Reduce の一般的な方法は、配列内の各項目を継続的に重ね合わせて返すことです

let log = console.log.bind(console);
let arr = [1,2,3,4,5,6];
arr = arr.reduce((cur,next) => {     return cur + next;
})
log(arr); // 21
上記のコードの最終結果は 1+2 であることがわかります。 + 3+4+5+6 = 21;

さらに、reduce は 2 番目のパラメーターも受け取ることができます。これは、コールバック関数 (最初のパラメーター) の cur の型と初期値を宣言するために使用されます。 ) おおよそこんな感じです。この方法により、配列内のオブジェクトの重複排除を非常にエレガントに実現できます。記事の冒頭の配列に戻りましょう:

let log = console.log.bind(console);
let arr = [1,2,3,4,5,6];
arr = arr.reduce((cur,next) => {     return cur + next;
},0) //指定cur的类型为Number并且初始值为0,当设为1时,最终打印的值为22log(arr); // 21
人を印刷した後、重複排除された配列を取得できます。

以上が配列内のオブジェクトを与えることからjsのreduce()を再考してくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。