我不确定这是否是我应用程序的错误,但我有一个这样的数组:
var arr = [{name: 'John'}, {name: 'Jane'}, {name: 'Smith'}, {name: 'George'}];
我正在尝试用 {name: 'Simon'}
替换 {name: 'Jane'}
所以,我正在做
arr.splice(1, 0, {name:'Simon'})
但是 Jane
没有被删除。只将 Simon 添加到列表中。
我以为拼接的第一个arg是放置新数组的地方,0
是替换现有数组
var arr = [{
name: 'John'
}, {
name: 'Jane'
}, {
name: 'Smith'
}, {
name: 'George'
}];
arr.splice(1, 0, {
name: 'Simon'
})
console.log(arr)
最佳答案
Array#splice
是错误的工具,因为它删除和/或插入元素。
您可以直接使用索引并替换项目。
var array = [{ name: 'John' }, { name: 'Jane' }, { name: 'Smith' }, { name: 'George' }];
array[1] = { name: 'Simon' };
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
编辑,几乎,您可以删除实际项目并添加一个新项目,但在这种情况下这是不可取的,因为您进行了一些不必要的数组运算,例如删除和插入项目。
arr.splice(1, 1, { name:'Simon' })
// ^ take one element out at index 1 and insert a new object
var array = [{ name: 'John' }, { name: 'Jane' }, { name: 'Smith' }, { name: 'George' }];
array.splice(1, 1, { name: 'Simon' });
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 用数组键替换数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46730483/