1. ホーム
  2. javascript

[解決済み] JavaScriptでオブジェクトの配列から明確な値を取得する方法は?

2022-03-15 03:49:06

質問

以下があると仮定して。

var array = 
    [
        {"name":"Joe", "age":17}, 
        {"name":"Bob", "age":17}, 
        {"name":"Carl", "age": 35}
    ]

すべての異なる年齢の配列を取得するための最良の方法は何でしょうか?

[17, 35]

各配列を繰り返してquot;age"の値をチェックし、別の配列の存在を確認し、なければ追加する必要がないような、代替のデータ構造または優れた方法はありませんか?

もし、繰り返し処理をせずに、異なる年齢を抜き出す方法があれば...。

現在の非効率的な方法を改善したいのですが...。もし、quot;array"がオブジェクトの配列ではなく、何らかのユニークなキー(例えば、quot;1,2,3")を持つオブジェクトのquot;map"という意味でも良いのですが、その場合は、quot;array"は "array "ではなく "quot "です。私はただ、最もパフォーマンス効率の良い方法を探しているだけです。

現在、私が行っている方法は以下の通りですが、私にとっては、イテレーションはうまくいっても、効率が悪いようにしか見えません...。

var distinct = []
for (var i = 0; i < array.length; i++)
   if (array[i].age not in distinct)
      distinct.push(array[i].age)

解決方法は?

もしこれがPHPなら、キーで配列を作り、その配列から array_keys しかし、JSにはそのような余裕はない。その代わり、こうしてみてください。

var flags = [], output = [], l = array.length, i;
for( i=0; i<l; i++) {
    if( flags[array[i].age]) continue;
    flags[array[i].age] = true;
    output.push(array[i].age);
}