簡體   English   中英

如何從二維數組中刪除特定的一維數組?

[英]How to delete a specific one-dimensional array from two-dimensional array?

我的項目功能如下:我有一個二維數組,然后應刪除特定的一維數組。 二維數組為:

// ID,Name,Age,Score。學生的ID是唯一的。

var arr1=[["1","aaa","20","90"],
      ["2","bbb","21","80"],
      ["3","ccc","22","70"], 
      ["4","ddd","23","60"],
     ];

var arr2=["3","ccc","22","70"];

我想得到一個二維數組。結果如下:

result=arr1=[["1","aaa","20","90"],
      ["2","bbb","21","80"],
      ["4","ddd","23","60"],
     ];

我寫了一些代碼,但遇到邏輯錯誤。jsfiddle的URL是: 編輯小提琴

非常感謝你。

因此,您要刪除arr1中ID對應於arr2 ID的數組嗎? 如果那是問題,只需寫:

for(var i=0;i<arr1.length;i++){
    if(arr1[i][0] === arr2[0])
        arr1.splice(i, 1);
}

http://jsfiddle.net/2pYT2/3/

由於您在演示中使用Underscore:

var result = _.filter(arr1, function (el) {
    return el[0] != arr2[0];
});

更新的演示: http : //jsfiddle.net/2pYT2/4/

您可以使用數組的過濾功能。 請參閱下面的代碼,未經測試,但希望能對您有所幫助。

這是為了修復您當前的代碼。 更好的解決方案是按照MarcoCI的建議將二維數組轉換為字典。 這將對您有很大幫助。

var arr1 = [
    ["1", "aaa", "20", "90"],
    ["2", "bbb", "21", "80"],
    ["3", "ccc", "22", "70"],
    ["4", "ddd", "23", "60"], ];
var arr2 = ["3", "ccc", "22", "70"];




// filters comparing all elements
// use filterArray(sourceArray, array1, array2, array3 ...)
function filterArray(arr) {
    var args = arguments;
    return arr.filter(function (x) {
        for (var i = 1; i < args.length; i++) {
            var tarr = args[i];
            for (var j = 0; j < tarr.length && j < x.length; j++) {
                if (tarr[j] != x[j]) {
                    return true;
                }
            }
        }
        return false;
    });

}

console.log(filterArray(arr1, arr2));

// filters comparing 0th element
// use filterArrayID(sourceArray, array1, array2, array3 ...)
function filterArrayID(arr) {
    var args = arguments;
    return arr.filter(function (x) {
        for (var i = 1; i < args.length; i++) {
            var tarr = args[i];
            if (tarr[0] != x[0]) {
                return true;
            }
        }
        return false;
    });

}

console.log(filterArrayID(arr1, arr2));

小提琴: http : //jsfiddle.net/2pYT2/5/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM