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;i log(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上找到元素,它们也会在整个数组中循环