如何通过underscorejs过滤表

时间:2017-06-04 13:16:52

标签: javascript node.js underscore.js

我通过下划线功能工作,我想在作者表中不存在按元素过滤的表格 我想最后显示[[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)

2 个答案:

答案 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>