我想知道是否有一种简单的方法可以在关键位置之后拼出所有元素。
array.splice(index,howmany,item1,.....,itemX)
文档说第二个指定要删除的元素数量的元素是必填字段,是否需要注意这一点?
P.S - 不寻找正常的蛮力解决方案。
答案 0 :(得分:9)
我想知道是否有一种简单的方法可以在json数组中的键位之后拼接出所有元素。
如果在关键位置之后是所有元素,则执行以下操作:
array.length = theKeyPosition;
E.g:
var array = [
"one",
"two",
"three",
"four",
"five",
"six"
];
var theKeyPosition = 3;
array.length = theKeyPosition; // Remove all elements starting with "four"
如果您还不知道关键位置,在ES5环境中(并且可以对其进行填充),您可以使用filter
:
var array = [
"one",
"two",
"three",
"four",
"five",
"six"
];
var keep = true;
array = array.filter(function(entry) {
if (entry === "four") {
keep = false;
}
return keep;
});
这是使用字符串,但您可以轻松地为您的对象数组更改if (entry === "four") {
到if (entry.someProperty === someValue) {
。
答案 1 :(得分:0)
尝试此方法,删除数组中的所有对象
array.splice(0, array.length);
答案 2 :(得分:0)
第二个参数实际上对于Array.prototype.splice()
是可选的,并且仅使用第一个参数就可以实现所需的行为。
例如(从接受的答案中复制):
const array = [
"one",
"two",
"three",
"four",
"five",
"six"
];
const theKeyPosition = 3;
array.splice(theKeyPosition+1); // Remove all elements starting with "four"
console.log(array);
但是,我仍然更喜欢设置length属性,因为它应该更快(我找不到JSPerf结果,请在这里帮助我)。
在MDN或my other answer上了解有关类似问题的更多信息。