underscorejs groupby 和过滤器

underscorejs groupby and filter

我有一组对象。我想 groupby & filter(remove) 未定义的对象,类别。请参考下面的脚本以获得更多清晰度:

arrayFlatten = [
      {
        area:"Digital",
        category:undefined,
        qId:"q11",
        qqId:"step1",
        type:"Reduce",
        val:1,
        userId:1,
        weightedAverage:0
      },
      {
        area:"Digital",
        category:"Analytics",
        qId:"q1",
        qqId:"step1",
        type:"Reduce",
        val:1,
        userId:1,
        weightedAverage:0
      },
      {
        area:"Digital",
        category:"Analytics",
        qId:"q1",
        qqId:"step2",
        type:"Reduce",
        val:1,
        userId:1,
        weightedAverage:0
      }
]

用于分组排序的命令

var groupCategory = _.groupBy(arrayFlatten,'category');
console.log(groupCategory);

预期结果应该如下所示:

arrayFlatten = [
          {
            area:"Digital",
            category:"Analytics",
            qId:"q1",
            qqId:"step1",
            type:"Reduce",
            val:1,
            userId:1,
            weightedAverage:0
          },
          {
            area:"Digital",
            category:"Analytics",
            qId:"q1",
            qqId:"step2",
            type:"Reduce",
            val:1,
            userId:1,
            weightedAverage:0
          }
    ]
filteredArray = _.filter(
    arrayFlatten,
    function (obj) {
        return obj.category !== undefined;
    }
);

filteredArray 将包含没有未定义类别的数组。

在大多数现代浏览器中,您也可以在不使用下划线的情况下执行此操作,使用此处描述的 Array.filter()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter