您可以在对象数组中拼接单个对象属性吗?

时间:2019-04-17 08:13:01

标签: javascript arrays

我想知道是否可以使用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'}

4 个答案:

答案 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)