如何遍历多个对象并删除特定属性

时间:2019-04-10 09:33:57

标签: javascript object

我想通过说我对编码非常陌生(如果这是一个非常简单的查询,很抱歉-但这让我很沮丧!)

我正在尝试第一次遍历对象并删除指定的键值对。

我有一个带有一系列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。

4 个答案:

答案 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属性。