如何将数组转换为对象?

时间:2013-06-24 19:34:42

标签: javascript arrays object

我有这个数组var arr = [0, 1, 2]

我希望将其转换为像这样的对象,

Object{
   data: [0, 1, 2]
}

如何使用函数获得所需的输出?感谢。

3 个答案:

答案 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工作。