2017-04-11 37 views
0

我有對象的數組,每個對象是類似於:聲明在JSON動態密鑰(JavaScript的,節點)

{ word: 'intentional', 
    definition: 'done by intention or design', 
    type: 'adjective', 
    Synonyms: [ 'conscious', 'deliberate', 'intended', 'knowing', ] } 

我試圖整個陣列轉換成以下json格式:

{ 
    "conscious": { 
     "data": ["done by intention or design"], 
     "type": "adjective", 
     "Synonym For": ["intentional"] 
    }, 
    "deliberate": { 
     "data": ["done by intention or design"], 
     "type": "adjective", 
     "Synonym For": ["intentional"] 
    }, 
    ... 

} 

這json格式是另一個程序,我不控制的輸入。 我在node.js上運行它。

我該如何聲明一個對象然後循環遍歷數組來填充它的意圖?

回答

2

var obj = { word: 'intentional', 
 
    definition: 'done by intention or design', 
 
    type: 'adjective', 
 
    Synonyms: [ 'conscious', 'deliberate', 'intended', 'knowing' ] }, 
 
    
 
    res = obj.Synonyms.reduce(function(s,a) { 
 
    s[a] = { data: [obj.definition], type: obj.type, SynonymFor: [obj.word] }; 
 
    return s; 
 
    }, {}); 
 
    
 
    console.log(res);

2
var jsonObj = {}; 
wordArray.forEach((word) => { 
    word.Synonyms.forEach((synonym) => { 
     jsonObj[synonym] = { 
      data: [word.definition], 
      type: word.type, 
      'Synonym For': [word.word] 
     }; 
    }) 
}) 
+1

你爲什麼動'同義詞For'出對象文本自身的聲明? – zerkms

+0

因爲內部空間的原因,我選擇了它不會工作,但你是對的。 @zerkms – xDreamCoding

+0

這完美的作品!謝謝@親愛的用戶 –