私が以下を持っていると仮定します:
var array =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35}
]
次の結果配列が得られるように、すべての異なる年齢の配列を取得できるようにするための最良の方法は何ですか。
[17, 35]
代わりに、「年齢」の値をチェックする各配列を反復処理し、その存在について別の配列に対してチェックし、存在しない場合は追加する必要がないように、データまたはより良い方法を代わりに構造化できる方法はありますか?
何らかの方法があったら、反復せずに異なる年齢を引き出すことができます...
私が改善したい現在の非効率的な方法...それは、オブジェクトの配列である「配列」の代わりに、いくつかの一意のキーを持つオブジェクトの「マップ」(つまり、「1、2、3」)であることを意味します大丈夫。Imは、最も効率的な方法を探しています。
以下は私が現在それをしている方法ですが、私にとって、反復はそれが機能しているにもかかわらず、効率のために不器用であるように見えます...
var distinct = []
for (var i = 0; i < array.length; i++)
if (array[i].age not in distinct)
distinct.push(array[i].age)
Set
オブジェクトとmap
は無駄です。この仕事は単純な.reduce()
段階を踏みます。