0

以下の例では、たとえばオブジェクト キーの 1 つまたは複数を"value"変数に設定する方法はありますか? JOSN オブジェクトをそのまま維持しながら、これを行いたいと思います。

var ex = { 
  "value": 4,
  "amount": 1341,
  "data": "tree",
  "animal": "mouse"
}

私はこれが可能であることを知っています。

var value = "value";
var ex = {};
ex[value] = 4;
ex.amount = 1341;
ex.data = "tree";
ex.animal = "mouse";

これは、オブジェクト全体をバラバラに引き裂くことであり、管理がはるかに困難です。

4

4 に答える 4

3

いいえ、それは不可能です。2 番目の方法、または 2 つの方法を組み合わせて行う必要があります。

var ex = {
  "amount": 1341,
  "data": "tree",
  "animal": "mouse"
};

ex[value] = 4;
于 2012-08-23T04:12:32.137 に答える
1

拡張できますObject.prototype

Object.prototype.append = Object.prototype.append || function (key,val){
   this[key] = val; return this;
};

のようなことができるように

var value = 'value'
   ,animal = 'animal' 
   ,ex = { 
          "amount": 1341,
           "data": "tree",
         }.append(value,4)
          .append(animal,'mouse');

appendメソッドはより包括的である可能性があります。

Object.prototype.append = Object.prototype.append || function(){
   var args = [].slice.call(arguments);
   if (args.length===1 && /object/i.test(args[0].constructor)){
    for (var l in args[0]){
      if (args[0].hasOwnProperty(l))
       this[l] = args[0][l];
    }
   }
   if (args.length===2){ this[args[0]] = args[1]; }
   if (args.length>2 && args.length%2<1){
    for (var i=0;i<args.length;i+=2){
      this[args[i]] = args[i+1];
    }
   }
   return this;
};

次のことができるようになりました。

var value = 'value'
   ,animal = 'animal'
   ,amount = 'amount'
   ,data = 'data'
   ,ex = {}.append(amount,1341,data,'tree',value,4,animal,'mouse');

このページも参照してください(ネイティブ JS オブジェクトの拡張について)

于 2012-08-23T05:18:25.440 に答える
0

構文の入力を節約したいだけの場合、または変数内のプロパティ名を使用してオブジェクトを初期化する自由を少し増やしたい場合は、可変数の引数を取り、連続する引数の各ペアをキーとして解釈する関数を作成できます。値:

function setProps(obj, key, value /* key2, value2, etc... */) {
    for (var i = 1; i < arguments.length; i+=2){
        obj[arguments[i]] = arguments[i+1];
    }
}

var ex = {};
setProps(ex, "value", 4, "amount", 1341, "data", "tree", "animal", "mouse");

渡されるキー値は、文字列または変数の値のいずれかです。

変数のプロパティ名を使用する、静的に宣言された JavaScript データ構造を定義する方法はありません。そのためにはコードを実行する必要があります。

于 2012-08-23T04:25:39.997 に答える
0

それは簡単な方法です....

 var ex = { 
  "value": 4,
  "amount": 1341,
  "data": "tree",
  "animal": "mouse"
}

var valList = [['4','1341','tree','mouse'],['5','1341','tree','mouse']];
var objList=[];
for (var i =0; i<valList.length; i++)
{
     j=0;
    for(var o in ex)
    {
    ex[o] = valList[i][j]; 
        j++;
    }
      objList[i]= ex;
}

オブジェクトの束を作ることができます

于 2012-08-23T04:15:27.877 に答える