2017-07-24 64 views
2

我努力做到以下幾點:循環中const對象

const obj { 
    for(i=0;i<data.length;i++){ 
     Key[i]: data[i].description 
    } 
} 

(我知道我可能還需要在除了在最後一個的每一行的末尾添加一個逗號,但我已經得到錯誤在早期階段)

這似乎不被允許在JS中。有沒有其他的選擇?謝謝!

+0

你想達到什麼目的? – nem035

+0

我想用一個JSON對象動態生成一個key和value來創建一個const obj = {key0:'value0',key1:'value1',key2:'value2',..}對象。 – user3339208

回答

2

它看起來像你試圖從一個鍵陣列和一個數據數組創建一個對象。

清潔的方法是使用數組減少:

const obj = data.reduce((obj, d, i) => { 
    obj[Key[i]] = d.description; 
    return obj; 
}, {}); 

其中,假設你的環境允許,可以進一步(因注意,這將是更清潔的代碼,但效率較低簡化,因爲object spread副本每次整個對象):

const obj = data.reduce((obj, d, i) => ({ 
    ...obj, 
    [Key[i]]: d.description 
}), {}); 

但你也可以使用一個簡單的循環for

const obj = {}; 
for (let i = 0; i < data.length; i++) { 
    obj[Key[i]] = data[i].description; 
} 

注意:如果Key.length !== data.length以上代碼會中斷。

+1

非常好!沒有選擇這個作爲最佳答案,因爲另一個更好地匹配了我的意圖(它也動態地添加了鍵,而不是從另一個數組中獲取這些鍵),但是我最初的問題並不明確,這也是非常有用的方法。謝謝!! :) – user3339208