我有这个对象:
var obj = {
name : 'Allen',
last : 'Jones',
age : 24,
city : 'London'
}
和这个数组:['name', 'age', 'city']
从所选字段创建对象的最有效方法是什么?如下,没有删除第一个属性?
obj2 = {name: 'allen', age: 24, city: 'London'}
答案 0 :(得分:3)
我建议使用Array#forEach()
并迭代新对象的给定键。
var obj = { name: 'Allen', last: 'Jones', age: 24, city: 'London' },
array = ['name', 'age', 'city'],
obj2 = {};
array.forEach(function (a) {
obj2[a] = obj[a];
});
document.write('<pre>' + JSON.stringify(obj2, 0, 4) + '</pre>');
答案 1 :(得分:1)
尝试这个简单的循环
var obj = {
name : 'Allen',
last : 'Jones',
age : 24,
city : 'London'
};
var obj2 = {};
var arr = ['name','age','city'];
arr.forEach(function(val){
obj2[val] = obj[val];
});
现在obj2应该只有选定的属性
答案 2 :(得分:0)
您可以使用循环来遍历每个属性。有许多方法,例如for循环,while循环或foreach循环。这是一个,使用简单的for循环:
var obj = {
name: 'Allen',
last: 'Jones',
age: 24,
city: 'London'
};
var arr = ['name', 'age', 'city'];
var obj2 = {};
for (var i = 0; i < arr.length; i++) {
var property = arr[i];
obj2[property] = obj[property];
}
可以看到实例({3}}。
答案 3 :(得分:0)
您可以从现有对象中删除“last”属性,该对象将与您想要的相同。
var obj = {
name : 'Allen',
last : 'Jones',
age : 24,
city : 'London'
}
delete obj.last;
console.log(obj);
希望得到这个帮助。
答案 4 :(得分:0)
以下是具有所需输出的通用方法:
var obj = {
name : 'Allen',
last : 'Jones',
age : 24,
city : 'London'
};
obj2 = ['name', 'age', 'city'];
function createObject(obj, arr) {
var newObj = {};
arr.forEach(function(value) {
if(obj.hasOwnProperty(value)) {
newObj[value] = obj[value];
}
});
return newObj;
}
document.write(JSON.stringify(createObject(obj, obj2)));
答案 5 :(得分:0)
在这个答案下有很多很好的方法。这是一种功能可链接的方法。
var obj = {
name : 'Allen',
last : 'Jones',
age : 24,
city : 'London'
},
arr = ['name', 'age', 'city'],
res = arr.reduce((p,c) => {p[c] = obj[c]; return p} ,{});
document.write("<pre>" + JSON.stringify(res) + "</pre>");