配列内のすべてのオブジェクトから特定のキーの値を取得する [重複] 質問する

配列内のすべてのオブジェクトから特定のキーの値を取得する [重複] 質問する

ドロップダウン ボックスにデータを供給するいくつかの API を持つ express.js アプリを実行しています。返されるデータは次の形式です。

  [
    {
        key: 'blah',
        value: 'Blah Blah'
    },
    {
        key: 'foo',
        value: 'Foos'
    },
    {
        key: 'bar',
        value: 'Bars'
    },
    {
        key: 'baz',
        value: 'Bazingo'
    }
];

ここで、キーはオプション キー、値は表示テキストです。この配列の構造は固定されており、配列内の各オブジェクトのフィールドとしてキーと値が常に存在することがわかります。

送信されたフォームを検証しようとすると (追加のサーバー側検証)、フィールドに提供された値を配列内の「キー」のすべての値 (blah、foo、bar、baz) と相互参照したいと思います。これは頻繁に使用されるルートであるため、毎回配列を反復処理して許可された値を見つけることを避けたいと思います。これを行うより簡単な方法はありますか? つまり、次の方法を使用できることはわかっています。

 permittedValues = [];
 for (i = 0; i < array.length; i++){
    permittedValues[i] = array[i]["key"];
 }

しかし、可能であれば、この for ループは避けたいと思います。

追記: これは根本的な質問のようですが、オンラインで見つけた回答は私の質問に正確には答えていませんでした。そのため、すでに質問され回答されている場合はお詫び申し上げます。

ベストアンサー1

あなたは出来るmap:

permittedValues = array.map(function(value) {
  return value.key;
});

ES6/ES2015ではさらに美しくなりました矢印関数:

permittedValues = array.map(value => value.key);

見た目はきれいかもしれませんが、for()ループより速くはないかもしれません。

おすすめ記事