我有:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
我希望能够做到这样的事情:
array.remove("B");
但没有删除功能。我该如何做到这一点?
答案 0 :(得分:157)
以相反的顺序遍历列表,并使用.splice
方法。
var array = ['A', 'B', 'C']; // Test
var search_term = 'B';
for (var i=array.length-1; i>=0; i--) {
if (array[i] === search_term) {
array.splice(i, 1);
// break; //<-- Uncomment if only the first term has to be removed
}
}
当必须删除所有出现的搜索字词时,相反的顺序非常重要。否则,计数器将增加,您将跳过元素。
如果只需删除第一个匹配项,则以下内容也可以使用:
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
答案 1 :(得分:91)
我实际上是使用更新的1行解决方案更新此线程:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
这个想法基本上是通过选择与要删除的元素不同的所有元素来过滤数组。
注意:将删除所有出现的内容。
答案 2 :(得分:18)
您需要使用.indexOf()
找到所需内容的位置,然后使用.splice()
function remove(arr, what) {
var found = arr.indexOf(what);
while (found !== -1) {
arr.splice(found, 1);
found = arr.indexOf(what);
}
}
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
remove(array, 'B');
alert(array);
这将照顾所有事件。
答案 3 :(得分:15)
One Liners列表
让我们为这个数组解决这个问题:
var array = ['A', 'B', 'C'];
<强> 1。仅删除第一个: 使用如果您确定该项目存在,则&lt; IE9
中不支持array.splice(array.indexOf('B'), 1);
<强> 2。只删除最后一个: 使用如果您确定该项目存在,则&lt; IE9
中不支持array.splice(array.lastIndexOf('B'), 1);
第3。删除所有出现的内容: &lt; IE9
不支持array = array.filter(v => v !== 'B');
答案 4 :(得分:9)
简单地
array.splice(array.indexOf(item), 1);
答案 5 :(得分:2)
简单解决方案(ES6)
如果您没有重复元素
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
答案 6 :(得分:1)
使用:
array.splice(2, 1);
这将从索引2(第3项)
开始从数组中删除一个项目答案 7 :(得分:1)
你必须自己写删除。您可以遍历数组,获取要删除的项目的索引,并使用splice
将其删除。
或者,您可以创建一个新数组,遍历当前数组,如果当前对象与您要删除的对象不匹配,请将其放入新数组中。
答案 8 :(得分:0)
使用array.splice
/*array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index) // SpiderMonkey/Firefox extension*/
array.splice(1,1)
来源: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
答案 9 :(得分:0)
const changedArray = array.filter( function(value) {
return value !== 'B'
});
或者您可以使用:
const changedArray = array.filter( (value) => value === 'B');
changedArray将包含无值'B'