gpt4 book ai didi

Javascript Array.map 复制而不改变原件

转载 作者:行者123 更新时间:2023-12-03 18:41:48 35 4
gpt4 key购买 nike

我注意到在使用 Array.map() 时删除对象属性会影响原始数组,我假设是因为每次迭代的项目仍然引用原始数组:

var objects = [{name: 'a', password: 'x'}, {name: 'b', password: 'x'}];

var clean = objects.map(user => {delete user.password; return user;});

console.log(JSON.stringify(objects));
> [{"name":"a"},{"name":"b"}]

有没有办法在不修改原件的情况下使用 mapfilter ?我可以考虑遍历每个项目并创建一个克隆,但很好奇是否有更简单的方法。

最佳答案

您可以通过取消引用来引用除password 之外的所有内容。然后使用 map 与其他所有内容一起构建一个新对象。如果您在对象上有除 name 之外的其他属性并且想要包含除 password 之外的所有内容,这很好。

var objects = [{name: 'a', password: 'x'}, {name: 'b', password: 'x'}];

var clean = objects.map(({password, ...user}) => user);

console.log(objects); // untouched

console.log(clean); // no password

关于Javascript Array.map 复制而不改变原件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51675730/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com