我不确定这是否是我的应用程序中的错误,但我有一个这样的数组:
var arr = [{name: 'John'}, {name: 'Jane'}, {name: 'Smith'}, {name: 'George'}];
我正在尝试将{name: 'Jane'}
替换为{name: 'Simon'}
,所以我正在做
arr.splice(1, 0, {name:'Simon'})
但Jane
尚未删除。 Just Simon被添加到列表中。
我认为拼接的第一个arg是放置新数组的位置,0
是替换现有数组
var arr = [{
name: 'John'
}, {
name: 'Jane'
}, {
name: 'Smith'
}, {
name: 'George'
}];
arr.splice(1, 0, {
name: 'Simon'
})
console.log(arr)

答案 0 :(得分:4)
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; }
答案 1 :(得分:1)
或者,如果您只想更改名称:
arr[1].name = "Simon";
答案 2 :(得分:1)
您可以使用sqaure括号直接访问元素。
arr[0]
将访问数组中的第一个元素,因此您需要arr[1]
。
您可以简单地说arr[1] = {name:'Simon'};
来执行此操作
splice()方法在数组中添加/删除项目,并返回已删除的项目。