Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript按值从数组中删除数组元素_Javascript_Arrays - Fatal编程技术网

Javascript按值从数组中删除数组元素

Javascript按值从数组中删除数组元素,javascript,arrays,Javascript,Arrays,我有一个javascript数组,我想根据数组的值删除一个元素,这是我的数组,这是我尝试过的,但没有成功 array = [] array.push (["Mozilla","Firefox",1.10]) index = array.indexOf(["Mozilla","Firefox",1.10]) array.splice(index, 1) 但是它不起作用,你知道吗?你可以使用fitermetodh,而不是indexOf 在该方法的回调中,可以选择不同的方法: 在数组上使用toSt

我有一个javascript数组,我想根据数组的值删除一个元素,这是我的数组,这是我尝试过的,但没有成功

array = []
array.push (["Mozilla","Firefox",1.10])
index = array.indexOf(["Mozilla","Firefox",1.10])
array.splice(index, 1)

但是它不起作用,你知道吗?

你可以使用
fiter
metodh,而不是
indexOf

在该方法的回调中,可以选择不同的方法:

  • 在数组上使用
    toString
    ,并比较两个字符串

  • 通过迭代包含的元素来测试长度和内容

  • 。。。继续

在任何情况下,使用
==
都可以解决问题,除非所包含的对象与您试图匹配的对象完全相同。
同样,我的意思是一样的。我们不是说拥有相同的内容,而是说拥有相同的实例。

您试图比较数组,数组是对象,具有唯一的地址。您的
索引
变量是
-1

在您的控制台中尝试
['Mozilla','Firefox',1.10]=['Mozilla','Firefox',1.10]
,您会看到,仅仅因为两个数组具有相同的值,并不意味着它们是相同的数组

您需要的是一种深度相等的比较样式,它检查数组中的每个值,以查看两个数组是否相似

看一看lodash的函数,了解一个想法

下面是一个简单的循环函数:

函数索引(数组、比较){
varⅠ,j;
主要内容:
对于(i=0;i控制台日志(arr)在数组上循环并检查相等性:

array = [];
array.push(["Mozilla", "Firefox", 1.10]);

for (var i = 0; i < array.length; i++) {
    if (arraysEqual(array[i], ["Mozilla", "Firefox", 1.10])) {
        array.splice(i, 1);
    }
}

function arraysEqual(a, b) {
    if (a === b) return true;
    if (a === null || b === null) return false;
    if (a.length != b.length) return false;

    for (var i = 0; i < a.length; ++i) {
        if (a[i] !== b[i]) return false;
    }
    return true;
}
array=[];
推送([“Mozilla”,“Firefox”,1.10]);
对于(var i=0;i
JSFiddle:


基于这个问题:

你可以这样做

array = []
array.push (["Mozilla","Firefox",1.10])
tempArray = array[0];
index = tempArray.indexOf("Mozilla","Firefox",1.10)
array.splice(index, 1)
如果将
放在
循环中而不是硬编码,则可以在此基础上进行构建。

看看这个:

// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};
//数组删除-由John Resig(麻省理工学院授权)
Array.prototype.remove=函数(从,到){
var rest=this.slice((to | | from)+1 | | this.length);
this.length=from<0?this.length+from:from;
返回此。推。应用(此,其余);
};
这是一个函数,由JQUery的创建者创建。 基本上,你对一个事物进行索引,然后它就被删除了

Array.prototype.remove=函数(从,到){
var rest=this.slice((to | | from)+1 | | this.length);
this.length=from<0?this.length+from:from;
返回此。推。应用(此,其余);
};
//Equals函数取自:
//http://stackoverflow.com/questions/7837456/comparing-two-arrays-in-javascript
Array.prototype.equals=函数(数组){
//如果另一个数组是falsy值,则返回
if(!数组)
返回false;
//比较长度-可以节省大量时间
if(this.length!=array.length)
返回false;
for(var i=0,l=this.length;i”+数组[i];
}
功能索引器(干草、针){
对于(变量i=0;i


元素:
[“Mozilla”、“Firefox”,1.10]==[“Mozilla”、“Firefox”,1.10]
返回
false
Mozilla和Firefox是一个变量名,还是说它们是字符串?您将一个数组推送到一个数组上,然后搜索该数组,这不能像suvroc poitned outedited那样完成,它们是字符串,thanks@aDoN对于引号,它是有效的:在处理字符串或数字数组时,它对我不起作用,但对数组不起作用