javascript - 使用underscorejs过滤二维数组

标签 javascript underscore.js

我在 javascript 中有这个数组:你可以看到它 here

 Array
(
    [2012-10-01] => Array
        (
            [1] => 1
            [2] => 0

...
            [148] => 0
            [149] => 0
            [150] => 1
        )

[2012-10-02] => Array
        (
            [1] => 0
            [2] => 1

...
            [148] => 0
            [149] => 1
            [150] => 0
        )

[2012-10-03] => Array
        (
            [1] => 1
            [2] => 0

...
            [148] => 0
            [149] => 0
            [150] => 1
        )
..............

为了减少它,我想只保留有 1 的项目并忽略有 0 的项目。 像这样

    Array
(
    [2012-10-01] => Array
        (
            [23] => 1
            [64] => 1
            [70] => 1
            [73] => 1
            [76] => 1
            [108] => 1
            [138] => 1
        )

我使用了 underscorejs 和这段代码:

 var new_o={};
    var v = _.each(original_array,function(day,key){
        var arr = {};
        _.map(day,function(item,k){
             if (item){
                 arr[k]=item;
             }
        }) ;

        new_o[key]= arr;
    } )    ;

它有效,但我很确定,我没有得到最好的下划线。 有人可以建议一个更聪明的方法吗?

最佳答案

不要使用_.map如果你不使用它的返回值,那只是 _.each 的稍微贵一点的版本。 .

就简化事情而言,你有点卡住了,因为 Underscore 和 JavaScript 都想迭代数组,并且你有嵌套对象(顺便说一句,{ } 是一个对象JavaScript 中的字面量[ ] 是一个数组,它们是完全不同的)。也许您对当前数据结构能做的最好的事情就是使用 _.reduce迭代子对象,同时携带新的子对象;像这样的东西:

var new_o = { };
_.each(original, function(day, key) {
    new_o[key] = _(day).reduce(function(memo, item, k) {
        if(item)
            memo[k] = item;
        return memo;
    }, { });
});

演示:http://jsfiddle.net/ambiguous/FZRV3/

关于javascript - 使用underscorejs过滤二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159885/

相关文章:

javascript - 当它出现在页面上时单击按钮/提交

javascript - SQL/C# DateTime 转换为 Javascript 变量

javascript - 关闭表折叠行

javascript - UnderscoreJS 按直方图的数值间隔分组

javascript - 鉴于 for...in 结构,库提供的函数(如 jQuery.map() 或 _.each())有什么用?

javascript - 从对象数组创建多级组

javascript - 如何将CSS应用于动态HTML内容?

javascript - 带有 Ng-If on Angular 指令的 jQuery Lite 元素查找器

javascript - 为什么下划线延迟解决了我的这么多问题?

javascript - 单击提交按钮时刷新页面而不是提交表单