0

私は現在、各オブジェクトがいくつかのプロパティを持つオブジェクトの配列を持っています。例:

[
   { text: 'test1',
     id: 1
   },
   { text: 'test2',
     id: 2
   }
]

これを からの値を含む文字列の配列に変換する最良の方法は何でしょうtextか? 私はunderscore.jsを使用してこれを行うことができるかもしれないと思っていました:

headerText = _.pick(headerRow, 'text');

しかし、オブジェクトは配列にあるため、これは機能しないと思います。私の次のアイデアは、配列内の各要素をループしてtext値を新しい配列にプッシュすることですが、これを行うためのよりエレガントな方法を誰かが知っているかどうか知りたいですか? 提案?

4

4 に答える 4

4

あなたが探しているArray#map

var stringArray = headerRow.map(function(entry) {
    return entry.text;
});

実例| ソース

Underscore も必要ありません。これArray#mapは ES5 の一部であり、Node.js で使用される JavaScript エンジンである V8 で完全にサポートされています。Array#map配列内のエントリごとに指定した関数を 1 回呼び出し、その関数の戻り値から新しい配列を構築します。

または、既存の配列を変更する場合は、次を使用できますArray#forEach

headerRow.forEach(function(entry, index) {
    headerRow[index] = entry.text;
});

実例| ソース

于 2013-03-04T16:45:22.517 に答える
1

を使用し_.map(headerRow, function(row) { return row.text; })ます。Array.mapIE < 9 では使用できません。

于 2013-03-04T16:45:03.820 に答える
0

私は foreach を使用して、それをループします。

 var jamie = [
    { text: 'test1',
      id: 1
    },
    { text: 'test2',
      id: 2
    }
 ];

 var length = jamie.length,
     element = [];
 for (var i = 0; i < length; i++) {
   element[i] = jamie[i].id;
   // Do something with element i.
 }
   console.info(element);
于 2013-03-04T16:46:46.913 に答える
-1

Array.mapこれは、一般的にサポートされていないメソッドの使用を回避するバニラ JavaScript バージョンです。

// assign the array to a variable
var a = [
   { text: 'test1',
     id: 1
   },
   { text: 'test2',
     id: 2
   }
];

// loop through each item in the array, reassigning with it's text value
// not like this: for(i in a) a[i] = a[i].text
// but with a for loop based on the array length
var i;
for(i=a.length; i; i--){ a[i-1] = a[i-1].text; }

// check the results
console.log(a);
// ["test1", "test2"]
于 2013-03-04T16:46:46.580 に答える