我有这个数组var arr = [0, 1, 2]
我希望将其转换为像这样的对象,
Object{
data: [0, 1, 2]
}
如何使用函数获得所需的输出?感谢。
答案 0 :(得分:8)
只需创建一个对象并将数组分配给它的属性:
var arr = [0, 1, 2];
var obj = {
data : arr
};
或者,如果您有现有对象,则可以按名称添加数组:
obj['data'] = arr;
或点符号:
obj.data = arr;
您应该知道这些都是通过引用复制数组,因此您对arr
变量所做的任何更新也会更新obj.data
。如果要按值复制,可以执行以下操作:
var obj = {
data: arr.slice(0)
};
有关按引用复制与按值复制的示例,请参阅this JSFiddle。您可以阅读this question的答案,了解有关按值复制与按引用复制的更多信息。
答案 1 :(得分:0)
你可以很容易地这样做var obj = {data:arr};
但是我认为你应该考虑使用该对象的目的。数组在技术上已经是一个javascript对象,所以你甚至可能不需要这样做
答案 2 :(得分:0)
你只需要一个工厂很容易。
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工作。