我想通过说我对编码非常陌生(如果这是一个非常简单的查询,很抱歉-但这让我很沮丧!)
我正在尝试第一次遍历对象并删除指定的键值对。
我有一个带有一系列User对象的函数,在该数组中,我想从每个对象中删除此人的名字。
我尝试使用.length属性遍历对象,但得到结果Reference Error: name is not defined.
当我尝试以下操作时,它可以工作(但是这并不理想,因为我希望代码在不指定单个索引号的情况下运行):
delete users[0].name;
delete users[1].name;
for (let i = 0; i < users.length; i++) {
if (users[i] === name) {
users.splice(i, 1);
}
return users;
}
实际结果:ReferenceError: name is not defined
我希望结果从对象中删除名称:''value。
答案 0 :(得分:2)
您可以迭代数组并删除不需要的属性。这会突变给定的数据。
for (var i = 0; i < users.length; i++) {
delete users[i].name;
}
高级版本使用不需要的属性进行销毁,并使用rest语法获取所有其他属性并返回此对象。
users = users.map(({ name, ...object }) => object);
答案 1 :(得分:0)
一种简单的方法是使用forEach
遍历项目并删除所需的属性。
let users = [{name: "a", prop1: 1, prop2: 2},{name: "b", prop1: 2, prop2: 2}, {name: "c", prop1: 3, prop2: 2}];
users.forEach(user => {
delete user['name'];
});
console.log("after deleting property", users);
答案 2 :(得分:0)
要删除键值对...
var users = [
{name: "John", role: "Cleaner"},
{name: "Jim", role: "Sergent"},
{name: "Jackhn", role: "Baker"},
{name: "Josh", role: "tinker"},
{name: "Jenny", role: "Soldier"}
];
for (var i=0; i < users.length; i++) {
delete users[i].name;
}
答案 3 :(得分:-1)
问题中只有一个代码块可见,但是您是说
delete users[0].name; delete users[1].name;
在有两个用户并且想要将其转换为循环时会做什么吗?
如果是,
for (let user of users) {
delete user.name;
}
这会遍历数组中的每个用户,并删除每个用户的name
属性。