我通过下划线功能工作,我想在作者表中不存在按元素过滤的表格 我想最后显示[[10,20,30,50,60],[80,66],[9,70,4,3]]
var tab=[];
_.each([[10,20,30,5,50,60],[80,6,66,7,8,2],[9,70,4,3,1]], function (c) {
var k= _.filter(c, function (cel) {
return _.some([1, 2, 5, 6, 8, 7], function (el) {
return cel != el
})
})
tab.push(k);
});
console.log(tab)
答案 0 :(得分:0)
使用_.every
代替_.some
,因为如果过滤器数组中的任何元素与表的元素不匹配,some
函数将返回true。因此,在每种情况下,您将数组的元素与数字1(过滤器数组的第一个元素)进行比较,并且由于表中的大多数数字!= 1,_.some
函数正在返回{{ 1}}所以这个数字被添加到true
函数的结果中。
答案 1 :(得分:0)
基本上,您可以使用
_.map
用于获取包含已过滤数组的数组_.filter
仅获取与给定值不匹配的值_.contains
用于检查带有values数组的项目。
var array = [[10, 20, 30, 5, 50, 60], [80, 6, 66, 7, 8, 2], [9, 70, 4, 3, 1]],
values = [1, 2, 5, 6, 8, 7],
result = _.map(array, function (a) {
return _.filter(a, function (v) {
return !_.contains(values, v);
});
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>