gpt4 book ai didi

javascript - 有没有更短/更有效的方法来使用 javascript 中的传播运算符来更新键的值?

转载 作者:行者123 更新时间:2023-12-03 16:43:49 24 4
gpt4 key购买 nike

我最近对使用扩展运算符语法很感兴趣,所以我尝试了一些示例,我有这个数组示例:

var entities = [
{
"id": 1,
"age": 33,
"hobby": "games"
},
{
"id": 2,
"age": 28,
"hobby": "chess"
},
{
"id": 3,
"age": 21,
"hobby": "comics"
},
{
"age": 23,
"hobby": "games"
}
]

然后,为了“一次”更新所有爱好,我执行以下操作:

entities.forEach(function(entity, index) {
this[index] = {...entity, hobby: "Some String to update all hobbies"};
}, entities);
console.log(entities)

这行得通,但我想知道在使用扩展运算符时是否有更有效或更短的方法来实现它。有什么建议吗?
编辑:
forEach 对我来说不是必需的,甚至不需要那样做,我很好奇是否可以使用(或不)扩展语法来更新嵌套值

最佳答案

当您更新列表时,传播运算符并没有真正帮助,就像您在示例中所做的那样。只更新每个对象的属性会更容易:

var entities = [ { "id": 1, "age": 33, "hobby": "games" }, { "id": 2, "age": 28, "hobby": "chess" }, { "id": 3, "age": 21, "hobby": "comics" }, { "age": 23, "hobby": "games" } ]

entities.forEach(entity => {
entity.hobby = "Some String to update all hobbies";
});

console.log(entities)

如果你想创建对象的副本,展开运算符很有用,就像你可能想在 .map 中做的那样:

var entities = [ { "id": 1, "age": 33, "hobby": "games" }, { "id": 2, "age": 28, "hobby": "chess" }, { "id": 3, "age": 21, "hobby": "comics" }, { "age": 23, "hobby": "games" } ]

const newEntities = entities.map(entity =>
({...entity, hobby: "Some String to update all hobbies"})
);

console.log(newEntities)

关于javascript - 有没有更短/更有效的方法来使用 javascript 中的传播运算符来更新键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53962609/

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