.map()
オブジェクトの配列を作成するために使用します。
var objects = $('.my_elements').map(function(i,el) {
var $el = $(el);
return {
text:$el.text(),
desc:'blah',
size:'some_size_property_of_the_element?',
color:$el.css('color')
};
}).get();
各反復から返されたオブジェクトがコレクションに追加されます。
このバージョンの は実際には jQuery オブジェクトを返すため、配列に変換する.map()
必要があります。.get()
もう一方$.map
を使用して、配列を直接作成できます。
var objects = $.map($('.my_elements'), function(el,i) {
var $el = $(el);
return {
text:$el.text(),
desc:'blah',
size:'some_size_property_of_the_element?',
color:$el.css('color')
};
});
パラメータが最初のバージョンと逆になっていることに注意してください。それに引っ掛かりやすい。
ところで、実際には「オブジェクト リテラル」を作成しているわけではありません。オブジェクトを作成しているだけです。「オブジェクトリテラル」は、オブジェクトを作成するために使用される表記法です。
また、数値インデックスから、オブジェクトの配列が必要であると想定しました。主構造が配列であってはならない場合は、次のように少し異なる必要があります...
var objects = {};
$('.my_elements').each(function(i,el) {
var $el = $(el);
objects[ i+1 ] = {
text:$el.text(),
desc:'blah',
size:'some_size_property_of_the_element?',
color:$el.css('color')
};
});
これにより1
、質問に示されているように番号付けが開始されます。私はまだ配列を使用する傾向がありますが。