我有一个对象。我希望能够动态创建一个数组,然后创建另一个包含与我创建的数组中的属性相对应的键值对的对象。
例如,如果我有以下对象......
var churchMembers = {
John: 'fsiolfjdklsjds@yahoo.com',
Betty: 'fowifj@hotmail.com',
Christopher: 'fsis@yahoo.com',
James: 'wfowji@gmail.com',
Deep: 'abab@msn.com'
};
我创建了以下数组:
var peopleComing = ['John', 'Christopher', 'James'];
我想要以下回复
var peopleList = {
John: 'fsiolfjdklsjds@yahoo.com',
Christopher: 'fsis@yahoo.com',
James: 'wfowji@gmail.com'
};
现在我正在尝试使用for
循环,我正在做的就是遍历对象属性,这不会给我任何东西。使用Object.keys
路线似乎适得其反,尽管这很容易让我过滤掉正确的名称。谢谢。统计所
答案 0 :(得分:1)
您可以使用Array#forEach
来迭代您的姓名列表,并获取每个姓名的电子邮件,然后将其添加到peopleList
。
var peopleList = {};
peopleComing.forEach(function(name){
peopleList[name] = churchMembers[name];
});
答案 1 :(得分:1)
忽略代码中的拼写错误,以下代码应该能够根据您的需要初始化peopleList
。
var churchMembers = {
John: "fsiolfjdklsjds@yahoo.com"
Betty: "fowifj@hotmail.com",
Christopher: "fsis@yahoo.com",
James: "wfowji@gmail.com",
Deep: "abab@msn.com"
},
peopleComing = ["John", "Christopher", "James"],
peopleList = {};
for (var i = 0, j = peopleComing.length; i < j; i++) {
peopleList[peopleComing[i]] = churchMembers[peopleComing[i]];
}