1

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

我想把它转换成这样的对象,

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

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

4

3 回答 3

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)
};

有关按引用复制与按值复制的示例,请参阅此 JSFiddle 。您可以阅读此问题的答案,以获取有关按值复制与按引用复制的更多信息。

于 2013-06-24T19:35:54.183 回答
0

您可以像这样很容易地做到这一点var obj = {data:arr};但是我认为您应该考虑使用该对象的目的。数组在技术上已经是一个 javascript 对象,所以你甚至可能不需要这样做

于 2013-06-24T19:42:42.233 回答
-1

这很容易,您只需要一个工厂即可。

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

于 2013-06-24T19:47:09.683 回答