ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でオブジェクトの配列から固有の年齢を抽出する方法
各オブジェクトが名前と年齢を持つ個人を表すオブジェクトの配列を考えます。
var array = [ { "name": "Joe", "age": 17 }, { "name": "Bob", "age": 17 }, { "name": "Carl", "age": 35 } ];
タスクは、この配列から異なる年齢を抽出し、一意の新しい配列を作成することです。値:
[17, 35]
ES6 では、一意の値のコレクションを自動的に維持する Set データ構造が導入されています。これを利用すると、個別の年齢を効率的に抽出できます。
const distinctAges = [...new Set(array.map(object => object.age))];
このアプローチでは、元の配列内の各オブジェクトの age プロパティに存在する一意の値のみを含む新しい配列が作成されます。
パフォーマンスが最重要である場合は、マップやobject:
const ageMap = {}; array.forEach(object => { ageMap[object.age] = true; }); const distinctAges = Object.keys(ageMap).map(Number);
このシナリオでは、年齢の値はオブジェクト (マップ) にキーとして保存されます。 Object.keys() メソッドは、一意のキー (年齢値) を配列として取得し、map(Number) を使用して数値に変換します。
初期反復メソッド質問に示されている問題は、include() メソッドを使用して重複値をチェックすることで改善できます:
var distinct = []; for (var i = 0; i < array.length; i++) { if (!distinct.includes(array[i].age)) { distinct.push(array[i].age); } }
この最適化により、比較の数が減少します。重複する年齢の複数のチェックを避けることが必要です。
以上がJavaScript でオブジェクトの配列から固有の年齢を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。