2017-10-08 96 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

谢谢...给予好评 –