2017-09-02 8 views
0

2d配列をループしています["cat","dog","bird"]この2dループ内に同様のマルチレベルJSONを動的に作成する方法はありますか?

このループでは、どのようにして動的にマルチレベルのJSONを作成できますか?理想的な答えは、jsonオブジェクトを構築し、それを変数に代入することです。期待される形式は以下に示されており、その単語が反復変数を表していると仮定することができます。または、反対の名前属性の場合は文字列連結 " - " +反復変数です。

{"cat": 
    { 
    "name":"cat", 
    "nickname":"cat", 
    "oppositeName":"-cat" 
    } 
}, 
{"dog": 
    { 
    "name":"dog", 
    "nickname":"dog", 
    "oppositeName":"-dog" 
    } 
}, 
{"bird": 
    { 
    "name":"bird", 
    "nickname":"bird", 
    "oppositeName":"-bird" 
    } 
} 
+0

配列やオブジェクトを結果として得たいのですか? –

答えて

1

あなたはこのような何かを行うことができます:あなたは与えられた名前とそのデータとオブジェクトをマッピングすることができ

const final = {}; 
 

 
['cat', 'dog', 'bird'].forEach(creature => { 
 
    final[creature] = { 
 
    "name": creature, 
 
    "nickname": creature, 
 
    "oppositeName": `-${creature}` 
 
    } 
 
}) 
 

 
console.log(final)

2

アレイの場合は、これを使用できます。オブジェクトの場合

var array = ["cat","dog","bird"]; 
 
    result = array.map(a => ({ 
 
     [a]: { 
 
      name: a, 
 
      nickName: a, 
 
      opositeName: '-' + a 
 
     } 
 
    })); 
 
    
 
console.log(result);

、あなたはspread syntax ...Object.assignを使用することができます。

var array = ["cat","dog","bird"]; 
 
    result = Object.assign(...array.map(a => ({ 
 
     [a]: { 
 
      name: a, 
 
      nickName: a, 
 
      opositeName: '-' + a 
 
     } 
 
    }))); 
 
    
 
console.log(result);

0

機能アプローチ:あなたが行うことができ

let animals = ['cat', 'dog', 'bird'] 
let result = animals.map(a => ({[a]: {name: a, nickname: a, oppositeName: '-' + a}})) 
0

var obj = {}; 
 
["cat","dog","bird"].forEach(function(a){ 
 
    obj[a] = {name : a, nickname : a, oppositeName:"-"+a} 
 
}); 
 
console.log(obj);

関連する問題