Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 - Fatal编程技术网

Javascript 如何从二维(嵌套)阵列中删除阵列?

Javascript 如何从二维(嵌套)阵列中删除阵列?,javascript,Javascript,我有一个特定坐标的二维数组: var array = [ [5, 34], [31, 82], [10, 31], [25, 24] ] 现在我想从数组中删除一些坐标对。假设我不需要[31,82]。如何从数组中删除此元素?我试过这个: var coords = [31, 82]; let index = arr.indexOf(coords); if (index !== -1) arr.splice(index, 1); 但是它不起作用。在这种情况下不能

我有一个特定坐标的二维数组:

var array = [ [5, 34],  [31, 82], [10, 31], [25, 24] ]
现在我想从数组中删除一些坐标对。假设我不需要
[31,82]
。如何从数组中删除此元素?我试过这个:

var coords = [31, 82];

let index = arr.indexOf(coords);
                if (index !== -1) arr.splice(index, 1);

但是它不起作用。

在这种情况下不能使用indexof。使用自定义函数执行此操作

var数组=[[5,34]、[31,82]、[10,31]、[25,24]]
函数索引(数组,项){
对于(var i=0;ilog(indexOf(array,[31,82])
只需在数组上迭代并比较相应的值即可。请查看以下工作代码:

var数组=[[5,34]、[31,82]、[10,31]、[25,24]]
var-coords=[31,82];
const newarr=array.filter((项)=>{
返回!(项目[0]==coords[0]&项目[1]==coords[1]);
});

控制台日志(newarr)请尝试此代码,了解如何从2D数组中删除数组

function filteredArray(arr, elem) {
  let newArr = [];
  // change code below this line
  for(var i=0; i<arr.length; i++){
    if(arr[i].indexOf(elem) === -1){
      for(var j=0; j<arr[i].length; j++){
        if(arr[i][j] === elem){
          arr.splice((i,j), 1);
        }
      }
      newArr.push(arr[i]);
    }
    else{
      newArr.push(arr[i]);
    }
  }
  // change code above this line
  return newArr;
}
函数过滤器阵列(arr,elem){
设newArr=[];
//更改此行下面的代码
对于(var i=0;i移动并停止到找到的第一个元素
如果只想删除查找到的第一个元素,可以使用
every
并返回
false
来停止循环

//用法:.every(removeFirstCoordFound,)
函数removeFirstCoordFound(val、i、arr、coord){
如果(val[0]==此[0]&&val[1]==此[1]){
返回!阵列拼接(i,1)
}
返回true;
}
演示
const数组=[[5,34]、[31,82]、[10,31]、[25,24]]
常数坐标=[31,82];
log(JSON.stringify(数组))
log('search',JSON.stringify(coord))
array.every(removeFirstCoordFound,coord)
函数removeFirstCoordFound(val、i、arr、coord){
控制台日志(i)
如果(val[0]==此[0]&&val[1]==此[1]){
返回!阵列拼接(i,1)
}
返回真值
}
console.log('stop')

console.log(JSON.stringify(array))
您在这里看了吗:+1以保持简单性并在找到时返回,这肯定会提高应用程序的性能,对于这种情况,我们必须使用for-loop而不是filter或其他数组函数,因为即使在索引0上找到元素,它们也会在整个数组中循环