我有:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
我希望能够执行以下操作:
array.remove("B");
但没有删除功能。我该如何完成?
我有:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
我希望能够执行以下操作:
array.remove("B");
但没有删除功能。我该如何完成?
Answers:
我实际上正在使用一个较新的1行解决方案更新此线程:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
这个想法基本上是通过选择与要删除的元素不同的所有元素来过滤数组。
注意:将删除所有出现的事件。
编辑:
如果只想删除第一次出现的情况:
t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']
以相反的顺序循环浏览列表,然后使用.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);
}
0不会自动像C那样更快。当然,只要您缓存了限制,如果您继续追逐第一个比赛,这会使事情复杂化(但如果停在那,则不会这样)。
                    您需要找到要查找的内容的位置,.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);
这将解决所有情况。
.indexOf(),你可以添加这对您的JavaScript文件。
                    Uncaught ReferenceError: array is not defined。怎么了?
                    .indexOf()更多功能。如果您在while循环内found将第二个参数传递给.indexOf()调用,则不会再次检查数组中已检查并最终不相等的元素:  found = arr.indexOf(what, found);
                    只是
array.splice(array.indexOf(item), 1);-1在没有发现任何东西的情况下返回并且哎呀,拼接将从数组末尾删除1个元素
                    简单解决方案(ES6)
如果没有重复的元素
Array.prototype.remove = function(elem) {
  var indexElement = this.findIndex(el => el === elem);
  if (indexElement != -1)
    this.splice(indexElement, 1);
  return this;
};   
您必须编写自己的删除。您可以遍历数组,获取要删除的项目的索引,然后使用splice它来删除它。
或者,您可以创建一个新数组,在当前数组上循环,如果当前对象与您要删除的对象不匹配,则将其放入新数组中。
用:
array.splice(2, 1);这将从数组中删除一个项目,从索引2开始(第3个项目)
array.splice(2,1)是从数组中删除索引2处的一项。检查https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice了解更多详细信息
                    使用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
array和之间的逗号splice必须是点。
                    
.indexOf()和.splice()应该做的伎俩。或者,也许是.filter()。