[英]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);
}
由於您在演示中使用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.