javascript 使用结构化删除对象内的属性[duplicate]

f3temu5u  于 2023-01-24  发布在  Java
关注(0)|答案(3)|浏览(175)
    • 此问题在此处已有答案**:

(31个答案)
What is destructuring assignment and its uses?(3个答案)
昨天关门了。
我的老师让我创建一个函数来删除每个对象内部的属性'密码'使用解构方法,但我认为他是在愚弄我,因为我还没有找到这样做的方法。

const test = [
    {  
      email: "samu@kenzie.com",
        endereco: { rua: "Rua Quitino", bairro: "Nações", zipCode: "78120-000"} ,
      id: 1,
        idade: 26,
      nome: "Samuel Persuhn",
      password: "51686aaasd2",
      stacks: [ "JavaScript", "PostgreSQL", "Node.js" ]
      },
  
    {
        email: "patrick@kenzie.com",
      endereco: { rua: "Avenida São Paulo", bairro: "Centro", zipCode: "45687-000"},
        id: 2,
      idade: 22,
      nome: "Patrick Nekel",
      password: "supersenha123548",
      stacks: [ "JavaScript", "MongoDB", "Python" ]
      },
    {  
      email: "samueleao@kenzie.com",
        endereco: { rua: "Avenida Brasil", bairro: "Centro", zipCode: "4587-000"},
        id: 3,
      idade: 28,
      nome: "Samuel Leão",
      password: "hash*asdasda7788",
      stacks: [ "HTML5", "CSS3", "React.js" ]
      },
    {
        email: "danrley@kenzie.com",
      endereco: { rua: "Rua do videomaker", bairro: "Hollywood", zipCode: "44744-000"},
        id: 4,
      idade: 30,
      nome: "Danrley",
      password: "889977",
      stacks: [ "VideoMaker", "Effects", "Roteirista" ]
      }
]

我尝试在每个对象内部使用解构,就好像每个参数是一个数组一样,但没有成功

1tuwyuhd

1tuwyuhd1#

最简单的解决方案是对数据执行map,返回一个新的对象数组,为每个对象destructure输入密码,并使用rest parameter syntax将所有其他对象属性赋给另一个对象,然后返回该对象。

const test=[{email:"samu@kenzie.com",endereco:{rua:"Rua Quitino",bairro:"Nações",zipCode:"78120-000"},id:1,idade:26,nome:"Samuel Persuhn",password:"51686aaasd2",stacks:["JavaScript","PostgreSQL","Node.js"]},{email:"patrick@kenzie.com",endereco:{rua:"Avenida São Paulo",bairro:"Centro",zipCode:"45687-000"},id:2,idade:22,nome:"Patrick Nekel",password:"supersenha123548",stacks:["JavaScript","MongoDB","Python"]},{email:"samueleao@kenzie.com",endereco:{rua:"Avenida Brasil",bairro:"Centro",zipCode:"4587-000"},id:3,idade:28,nome:"Samuel Leão",password:"hash*asdasda7788",stacks:["HTML5","CSS3","React.js"]},{email:"danrley@kenzie.com",endereco:{rua:"Rua do videomaker",bairro:"Hollywood",zipCode:"44744-000"},id:4,idade:30,nome:"Danrley",password:"889977",stacks:["VideoMaker","Effects","Roteirista"]}];

// `map` over the data and for each object
// destructure out the password, and assign the
// rest of the properties to a new object (I've called
// it `rest` here but you can call it anything. Finally
// return that object
const out = test.map(obj => {
  const { password, ...rest } = obj;
  return rest;
});

console.log(out);
syqv5f0l

syqv5f0l2#

function removeItem(){
    const newTest = test.map(({email, nome, id, stacks, idade, password}, index) => {
        return {email, nome, id, stacks, idade}
    })
    
    return newTest;
}

你将不再需要到remove或删除作为remove任何项目从列表将mutate.

1l5u6lss

1l5u6lss3#

你可以循环数组,析构每个数组的对象,只得到你需要的属性:

let test = [
    {  
      email: "samu@kenzie.com",
        endereco: { rua: "Rua Quitino", bairro: "Nações", zipCode: "78120-000"} ,
      id: 1,
        idade: 26,
      nome: "Samuel Persuhn",
      password: "51686aaasd2",
      stacks: [ "JavaScript", "PostgreSQL", "Node.js" ]
      },
  
    {
        email: "patrick@kenzie.com",
      endereco: { rua: "Avenida São Paulo", bairro: "Centro", zipCode: "45687-000"},
        id: 2,
      idade: 22,
      nome: "Patrick Nekel",
      password: "supersenha123548",
      stacks: [ "JavaScript", "MongoDB", "Python" ]
      },
    {  
      email: "samueleao@kenzie.com",
        endereco: { rua: "Avenida Brasil", bairro: "Centro", zipCode: "4587-000"},
        id: 3,
      idade: 28,
      nome: "Samuel Leão",
      password: "hash*asdasda7788",
      stacks: [ "HTML5", "CSS3", "React.js" ]
      },
    {
        email: "danrley@kenzie.com",
      endereco: { rua: "Rua do videomaker", bairro: "Hollywood", zipCode: "44744-000"},
        id: 4,
      idade: 30,
      nome: "Danrley",
      password: "889977",
      stacks: [ "VideoMaker", "Effects", "Roteirista" ]
      }
];

test = test.map(({ email, id, idade, nome, stacks }) => ({
  email, id, idade, nome, stacks,
}));

相关问题