所以我有两个看起来像这样的数组:
arr 1:
[[Tue Feb 20 09:00:00 GMT+01:00 2018, xxx, cc0902be495c4350a6bfcd1734c843b9, xxx, affiliate, 101723.0, ru, 9e09ee193e21766b1946e485eec9adcf, 0.81, 0.72, 6.05, 0.5265, 0.1053, 0.6318, 3.9325, 0.7865, 4.719, 0.468, 0.0936, 0.5616], [Tue Feb 21 09:00:00 GMT+01:00 2018, xxx, f8875453e5354d88931e3474021f723a, xxx, affiliate, 101723.0, ru, b4cb6e13bc1909b6f04f8cd44b1374d5, 0.5, 0.44, 3.72, 0.325, 0.065, 0.39, 2.418, 0.4836, 2.9016, 0.286, 0.0572, 0.3432],[Tue Feb 22 09:00:00 GMT+01:00 2018, xxx, f8875453e5354d88931e3474021f723a, xxx, affiliate, 101723.0, ru, b4cb6e13bc1909b6f04f8cd44b1374d5, 0.5, 0.44, 3.72, 0.325, 0.065, 0.39, 2.418, 0.4836, 2.9016, 0.286, 0.0572, 0.3432]]
arr 2:
[[Tue Feb 20 09:00:00 GMT+01:00 2018, xxx, cc0902be495c4350a6bfcd1734c843b9, xxx, affiliate, 101723.0, ru, 9e09ee193e21766b1946e485eec9adcf, 0.81, 0.72, 6.05, 0.5265, 0.1053, 0.6318, 3.9325, 0.7865, 4.719, 0.468, 0.0936, 0.5616], [Tue Feb 21 09:00:00 GMT+01:00 2018, xxx, f8875453e5354d88931e3474021f723a, xxx, affiliate, 101723.0, ru, b4cb6e13bc1909b6f04f8cd44b1374d5, 0.5, 0.44, 3.72, 0.325, 0.065, 0.39, 2.418, 0.4836, 2.9016, 0.286, 0.0572, 0.3432],[Tue Feb 22 09:00:00 GMT+01:00 2018, xxx, f8875453e5354d88931e3474021f723a, xxx, affiliate, 101723.0, ru, b4cb6e13bc1909b6f04f8cd44b1374d5, 0.5, 0.44, 3.72, 0.325, 0.065, 0.39, 2.418, 0.4836, 2.9016, 0.286, 0.0572, 0.3432],[Tue Feb 23 09:00:00 GMT+01:00 2018, xxx, f8875453e5354d88931e3474021f723a, xxx, affiliate, 101723.0, ru, b4cb6e13bc1909b6f04f8cd44b1374d5, 0.5, 0.44, 3.72, 0.325, 0.065, 0.39, 2.418, 0.4836, 2.9016, 0.286, 0.0572, 0.3432]]
我想要实现但不知道如何删除 arr 1 中与 arr 2 具有相同日期的条目。 Sp,考虑到上面提供的数据,arr中的所有条目都需要删除,因为它们的日期与 arr 2 中的entrie日期重叠。
我该怎么做?条目号或其他值无关紧要。例如,如果 arr 1 我有10k条目,日期为5月5日,而 arr 2 我有一个条目具有相同的日期,我仍然希望这些10k条目在 arr 1 中删除。
我尝试使用过滤器执行此操作,但由于它是 2d 数组,我认为这根本不是正确的方法。
答案 0 :(得分:4)
使用map
和filter
。
在arr2
var allArr2Dates = arr2.map( s => s[0] );
然后使用此数组
过滤arr1
arr1 = arr1.filter( s => allArr2Dates.includes( s[0] ) );
ES5等效
var allArr2Dates = arr2.map( function(s){ return s[0]; } );
arr1 = arr1.filter( function(s) { return allArr2Dates.includes( s[0] ); } );
答案 1 :(得分:1)
有可能,混合过滤器和每一个。
let one = [[1, 'aaa'], [2, 'bbb'], [3, '444']];
let second = [[14, 'aaa'], [2, 'bbb'], [6, 'ccc']];
const result = one.filter(data => second.every(dataAux => dataAux[0] !== data[0]));

答案 2 :(得分:1)