Rol*_*ndo 105 javascript arrays
我有:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Run Code Online (Sandbox Code Playgroud)
我希望能够做到这样的事情:
array.remove("B");
但是没有删除功能.我该如何做到这一点?
Rob*_*b W 170
以相反的顺序遍历列表,并使用该.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
}
}
Run Code Online (Sandbox Code Playgroud)
当必须删除所有出现的搜索项时,相反的顺序很重要.否则,计数器将增加,您将跳过元素.
当只需要删除第一个匹配项时,以下内容也将起作用:
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
Run Code Online (Sandbox Code Playgroud)
Tyr*_*nas 120
我实际上是使用更新的1行解决方案更新此线程:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
Run Code Online (Sandbox Code Playgroud)
这个想法基本上是通过选择与要删除的元素不同的所有元素来过滤数组.
注意:将删除所有出现的内容.
qwe*_*ymk 19
您需要找到您要查找的位置,.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)????;
Run Code Online (Sandbox Code Playgroud)
这将照顾所有事件.
ene*_*esn 18
一个衬里列表
让我们为这个数组解决这个问题:
var array = ['A', 'B', 'C'];
Run Code Online (Sandbox Code Playgroud)
1.仅删除第一个: 使用如果您确定该项目存在,则<IE9中不支持
array.splice(array.indexOf('B'), 1);
Run Code Online (Sandbox Code Playgroud)
2.仅删除最后一个: 使用如果您确定该项目存在,则<IE9中不支持
array.splice(array.lastIndexOf('B'), 1);
Run Code Online (Sandbox Code Playgroud)
3.删除所有出现次数: <IE9中不支持
array = array.filter(v => v !== 'B');
Run Code Online (Sandbox Code Playgroud)
Mat*_*att 13
只是
array.splice(array.indexOf(item), 1);
Run Code Online (Sandbox Code Playgroud)