2017-10-08 79 views
0

這裏是我的代碼:如何動態創建對象?

var parts = ['Identifiers', 'Names', 'Emails']; 

window["identifier_websites"] = ["aparat", "youtube", "telegram"]; 
window["name_websites"]  = ["twitter", "instagram", "googleplus", "facebook", "linkedin", "cloob", "stackoverflow", "hammihan", "lenzor", "delgoo"]; 
window["email_websites"]  = ["email", "gmail", "aol", "chmail"]; 

我要動態地做出這樣的:

{"Identifiers":identifier_websites, "Names":name_websites, "Emails":email_websites} 

就是幹這個可能嗎?

回答

0

當然,js是動態語言,所以這不僅是可能的,而且被廣泛使用,您可以在節點REPL中嘗試像這樣的片段,只需在終端中鍵入節點即可。

+0

這裏是exapmle:https://i.stack.imgur.com/piNHE.png – Yarick

0

如果您嘗試動態地走路零件以創建一個對象,就這樣做。

parts.reduce((acc, k) => { 
    var singular = k.substr(0, k.length - 1).toLowerCase() + "_websites"; 
    acc[k] = window[singular]; 
    return acc; 
}, {}); 
1

此功能來這裏Convert Array to Object,你剛剛從一個新添加的所有陣列到所有這些合併成一個和後使用。

//var result = new Map(arr.map((i) => [i.key, i.val])); 
 

 
var parts = ['Identifiers', 'Names', 'Emails']; 
 
var myArrays = []; 
 
window["identifier_websites"] = ["aparat", "youtube", "telegram"]; 
 
window["name_websites"]  = ["twitter", "instagram", "googleplus", "facebook", "linkedin", "cloob", "stackoverflow", "hammihan", "lenzor", "delgoo"]; 
 
window["email_websites"]  = ["email", "gmail", "aol", "chmail"]; 
 

 
myArrays.push(window.identifier_websites, window.name_websites, window.email_websites); 
 
//console.log(myArrays); 
 
var obj =myArrays.reduce(function(acc, cur, i) { 
 
    acc[parts[i]] = cur; 
 
    return acc; 
 
}, {}); 
 
console.log(obj)

+0

謝謝...給予好評 –