我有2个阵列a和b。
var a = [ [1,'jake','abc',0 ], ['r', 'jenny','dbf',0] , ['r', 'white','dbf',0] ]
var b = [ ['s','jake','abc' ], [3, 'peter','xyf'] , ['r', 'red','dbf',0] ]
现在,我只想比较每个项目中的第二个元素以获得差异。例如,[' s' jake'' abc'在数组b中,我只想比较第二个元素' jake',它是否与数组a中每个项目的第二个元素相同。期望结果应该是这样的:
var resultAdd = [ [3, 'peter','xyf'],['r', 'red','dbf',0] ]
var resultMin = [ ['r', 'jenny','dbf',0],['r', 'white','dbf',0] ]
我是否必须使用双' for循环'获得结果或任何更好的方式来获得? THX!
答案 0 :(得分:0)
我知道您要删除两个数组中存在的项目(我指的是每个项目匹配的第二个元素)。
希望下面的代码可以解决问题。
var a = [ [1,'jake','abc',0 ], ['r', 'jenny','dbf',0] , ['r', 'white','dbf',0] ]
var b = [ ['s','jake','abc' ], [3, 'peter','xyf'] , ['r', 'red','dbf',0] ]
var resultAdd = JSON.parse(JSON.stringify(b));
var resultMin = a.filter(function(aItem){
var i = resultAdd.findIndex(function(resultAddItem){return resultAddItem[1] == aItem[1];}); // checking second element of each item.
if(i != -1){ // if element is present in resultAdd (clone of b)
resultAdd.splice(i, 1); // Than remove it from the resultAdd.
return false; // Also filter it out from resultMin.
}
return true;
})
console.log(resultAdd);
console.log(resultMin);