1

私はこの配列を持っています、var arr = [0, 1, 2]

このようなオブジェクトに変換したいのですが、

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

おそらく関数を使用して目的の出力を取得するにはどうすればよいですか? ありがとう。

4

3 に答える 3

8

オブジェクトを作成し、配列をそのプロパティの 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を参照してください。値によるコピーと参照によるコピーの詳細については、この質問への回答を読むことができます。

于 2013-06-24T19:35:54.183 に答える
-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 に答える