删除每个用户对象上的键值对

时间:2019-05-15 12:48:27

标签: javascript

我在删除每个用户对象上的键值对时遇到困难

我一直在使用delete方法来尝试删除密码对象 返回delete Object.keys(users.password)

function deletePassword(newUsers) {
  /*
    This function take an array of user objects and deletes the password key value pair on each user object.

3 个答案:

答案 0 :(得分:4)

您可以将map()用于解构。解构要删除的属性,并从map()

返回其余属性

const arr = [ {name: 'Barry', password: 'ilovetea'}, {name: 'Sandeep', password: 'ilovecoffee'}, {name: 'Kavita', password: 'ilovepie'} ]

function deletePass(arr){
  return arr.map(({password,...rest}) => rest)
}
console.log(deletePass(arr))

上述方法不适用于动态属性,因为您无法命名所有属性。为此,您可以使用以下方式]

  • 创建一个具有两个功能的功能。
    • 对象数组
    • 包含应删除键的数组。
  • 在数组上使用map()函数。
  • 使用Object.entries()
  • 获取每个对象的条目
  • 在条目上使用filter(),并检查要删除的密钥中是否不存在密钥,然后将其删除
  • 在过滤的条目上使用Object.fromEntries(),您将获得对象的结果数组。

const arr = [ {name: 'Barry', password: 'ilovetea'}, {name: 'Sandeep', password: 'ilovecoffee'}, {name: 'Kavita', password: 'ilovepie'} ]

function deleteProps(arr,keys){
   return arr.map(x => 
               Object.fromEntries(
                  Object.entries(x)
                  .filter(([k]) => !keys.includes(k))
               )
            )
}
console.log(deleteProps(arr,["password"]))

答案 1 :(得分:1)

您可以使用delete键删除属性。
在下面看看。

var data =[
    {name: 'Barry', password: 'ilovetea'},
    {name: 'Sandeep', password: 'ilovecoffee'},
    {name: 'Kavita', password: 'ilovepie'}
]

function removeKey(items, key){

    items.forEach(item=> {
        delete item[key]; // remove the attr eg Password
    });

    return items;
}

console.log(removeKey(data, "password"))

答案 2 :(得分:0)

您可以使用Array.map函数,然后在每个单独的条目上调用delete

function deleteManyPasswords(users) {
    return users.map((user) => {
        delete user.password;

        return user;
    });
}