我想知道是否可以使用splice方法对对象数组中的特定对象属性进行突变。
例如
const array = [
{ name: 'Object 1', body: 'Hello world'},
{ name: 'Object 2', body: 'Bye Pluto'}
]
array.splice(1, 1, /* Can I mutate [1].body without replacing the whole object? */)
预期输出为:
{ name: 'Object 1', body: 'Hello world'},
{ name: 'Object 2', body: 'Bye Jupiter'}
答案 0 :(得分:5)
您可以将property accessor与数组,索引和属性一起使用,而无需对数组进行拼接。
const array = [{ name: 'Object 1', body: 'Hello world'}, { name: 'Object 2', body: 'Bye Pluto'}];
array[1].body = 'Bye Mars!';
console.log(array);
答案 1 :(得分:0)
const array = [
{ name: 'Object 1', body: 'Hello world'},
{ name: 'Object 2', body: 'Bye Pluto'}
]
array[1].body = "New Content"
console.log(array)
答案 2 :(得分:0)
splice()
方法通过删除或替换现有元素和/或添加新元素来更改数组的内容。因此,如果不删除它,就永远不能使用splice更新数组中的对象。
您想要轻松实现的目标
const array = [
{ name: 'Object 1', body: 'Hello world'},
{ name: 'Object 2', body: 'Bye Pluto'}
]
array[1].body = 'Bye Jupiter 1'
console.log(array)
array[1]['body'] = 'Bye Jupiter 2'
console.log(array)
答案 3 :(得分:0)
如果您使用splice进行此操作。
const array = [
{ name: 'Object 1', body: 'Hello world'},
{ name: 'Object 2', body: 'Bye Pluto'}
];
array.splice(1, 1, {...array[1], body: 'Bye Jupiter'})
console.log(array)
当然,您可以轻松做到这一点。
const array = [
{ name: 'Object 1', body: 'Hello world'},
{ name: 'Object 2', body: 'Bye Pluto'}
]
array[1].body = 'Bye Jupiter';
console.log(array)