我使用的是knockout,有两个数组。
我想找出数组之间的差异,也就是说,在较长数组中的任何项目都不在较小数组中。
我已经
console.warn(items1); // 10
console.warn(items2); // 11
var filtered = ko.utils.arrayFilter(items1, function (e) {
return !items2.indexOf(e) > -1;
});
console.warn(filtered); // 10
如何更改此设置,使其保留为筛选后的1个新项目?
我试过return items2.indexOf(e) > -1;
我试过在过滤器上切换数组并返回。
我试过返回items2.indexOf(e) == -1;
要么全部给予10, 11, or 0.
如何将其设置为return 1
?
3条答案
按热度按时间n6lpvg4x1#
您可以透过筛选第二个数组中未包含在第一个数组中的项目来取得差异。
const difference = items2.filter(item => !items1.includes(item));
zzzyeukh2#
我建议使用
!includes
作为其他答案,但为了完整性起见,这是您在以下情况下保持您的方法的方式:ko.utils.arrayFilter
将返回作为第一个参数传入的数组中的项,而您需要的项来自更长的数组,因此您应该传入items2
。您希望它返回的项 * 不是 *items1
中的项,因此indexOf
将为这些项返回-1
。x7yiwoj43#
例如,您可以使用过滤器来检查差异