私はこの配列を持っています、var arr = [0, 1, 2]
このようなオブジェクトに変換したいのですが、
Object{
data: [0, 1, 2]
}
おそらく関数を使用して目的の出力を取得するにはどうすればよいですか? ありがとう。
私はこの配列を持っています、var arr = [0, 1, 2]
このようなオブジェクトに変換したいのですが、
Object{
data: [0, 1, 2]
}
おそらく関数を使用して目的の出力を取得するにはどうすればよいですか? ありがとう。
オブジェクトを作成し、配列をそのプロパティの 1 つに割り当てるだけです。
var arr = [0, 1, 2];
var obj = {
data : arr
};
または、既存のオブジェクトがある場合は、配列を名前で追加できます。
obj['data'] = arr;
またはドット表記:
obj.data = arr;
arr
これらはすべて参照によって配列をコピーしているため、変数に加えた更新obj.data
も同様に更新されることに注意してください。値でコピーしたい場合は、次のようにすることができます。
var obj = {
data: arr.slice(0)
};
参照によるコピーと値によるコピーの例については、この JSFiddleを参照してください。値によるコピーと参照によるコピーの詳細については、この質問への回答を読むことができます。
そのためのファクトリが必要なだけなので、とても簡単です。
function arrayToObjectTransformationFactory($array, $transformationTransportProtocol){
return function($array){
if ( !Array.prototype.forEach ) {
Array.prototype.forEach = function(fn, scope) {
for(var i = 0, len = this.length; i < len; ++i) {
fn.call(scope, this[i], i, this);
}
};
}
$array.forEach($transformationTransportProtocol)
return { "data": $array };
}($array);
}
arrayToObjectTransformationFactory([0, 1, 2], function($element, $index, $array){
var quux = [];
quux.push($array[$index]);
});
クロスブラウザやjQueryでも動作するはずです。