繁体   English   中英

JS双数组移除元素

[英]JS double array remove element

我想从一个数组(一个数组的数组)中删除一个元素(一个数组)。

car = [carId, brand, year]; //array
selectedCars = []; //array of arrays

这是我尝试过的方法,但是尽管如此,但比较从未实现。

function removeElementFromArray(carsArray, car){
    var i;
    for(var k = 0; k < carsArray.length; k++){
        if(carsArray[k][0] == car[0]){
            i=k;
        }
    }

    var index = carsArray.indexOf(i);
    if(index != -1) {
        carsArray.splice(index, 1);
    }
}

carsArray.indexOf(i)永远找不到任何东西。 carsArray是数组的数组, i是找到匹配项的索引,而不是数组。

您无需调用indexOf()for循环已找到所需的索引。 您只需要测试它是否发现了任何东西。

if (index !== undefined) {
    carsArray.splice(index, 1));
}

您还应该break; 在循环中,因此一旦找到匹配项,您就停止搜索。

实际上,您可以在循环中进行拼接。

for (var i = 0; i < carsArray.length; k++) {
    if (carsArray[k][0] == car[0]) {
        carsArray.splice(k, 1);
        break;
    }
}

您可以尝试使用数组.every方法进行比较,如果可以使用es6,则可以与.findIndex一起使用:

 car = ["carId", "brand", "year"]; //array selectedCars = [["carId", "brand", "year"], ["otherCarId", "brand", "year"]]; //array of arrays function removeCar(selected, car) { const index = selected.findIndex(selectedCar => selectedCar.every((val, i) => val === car[i])); if (index !== undefined) selected.splice(index, 1); return selected; } console.log(selectedCars); removeCar(selectedCars, car); console.log(selectedCars); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM