sab*_*sab 2 javascript ecmascript-6
我最近对使用spread运算符语法感兴趣,所以我尝试了一些例子,我有这个数组的例子:
var entities = [
{
"id": 1,
"age": 33,
"hobby": "games"
},
{
"id": 2,
"age": 28,
"hobby": "chess"
},
{
"id": 3,
"age": 21,
"hobby": "comics"
},
{
"age": 23,
"hobby": "games"
}
]
Run Code Online (Sandbox Code Playgroud)
然后,要在"一次"更新所有爱好,我会执行以下操作:
entities.forEach(function(entity, index) {
this[index] = {...entity, hobby: "Some String to update all hobbies"};
}, entities);
console.log(entities)
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我想知道在使用扩展运算符时是否有更高效或更短的方法来实现它.有什么建议?
编辑:
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)Run Code Online (Sandbox Code Playgroud)
如果要创建对象的副本,则扩展运算符很有用,就像您可能希望在以下情况中那样.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)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |