我有这样的阵列,var arr = [0, 1, 2]
如何将数组转换为对象?
,我想将其转换成一个像这样的对象,
Object{
data: [0, 1, 2]
}
如何,我会得到使用功能也许期望的输出?谢谢。
我有这样的阵列,var arr = [0, 1, 2]
如何将数组转换为对象?
,我想将其转换成一个像这样的对象,
Object{
data: [0, 1, 2]
}
如何,我会得到使用功能也许期望的输出?谢谢。
只需创建一个对象和数组分配到一个它它的属性:
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的答案以获取有关按值复制和按引用复制的更多信息。
就是这样,谢谢你! –
您的'copyByValue'函数基本上可以用'arr.slice(0)'代替。它也会创建一个数组的浅表副本。 –
@FelixKling尼斯:)我不知道 – cfs
你可以很容易地做到这一点var obj = {data:arr};
但我认为你应该考虑你使用该对象的目的是什么。一个数组在技术上已经是一个JavaScript对象,所以你可能甚至不需要这样做
这很容易,你只需要一个工厂。
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。
我不太明白这一点。该功能有什么用处?你根本不改变阵列?同样,与简单的for循环相比,它们都非常复杂,因为您将修改数组。我不明白 –
'var obj = {data:arr};' –
为什么您认为您需要这样做 – aaronman
JavaScript教程介绍了这些内容。请阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects和http://eloquentjavascript.net/chapter4.html。 –