[英]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.