繁体   English   中英

lodash:筛选值非空数组的对象

[英]lodash: filter objects with value of non empty array

我对lodash并不陌生,我正在写一行代码,该代码返回具有非空数组作为值(不包括空数组值)的对象;

let results = {"1":[1,2,3],"2":[2,4,6],"0":[]};
let filteredResults = _.filter(results, (result) => {return (_.size(_.values(result)) > 0);});
console.log(filteredResults);

我的filteredResults期望值是: {'1': [ 1, 2, 3 ], '2': [ 2, 4, 6 ] } 但是我得到[ [ 1, 2, 3 ], [ 2, 4, 6 ] ]

按键12在哪里?

_.filter方法可以接受一个对象作为其第一个参数,但是它只会返回一个数组,其中包含原始对象接受的值。 您可能想改用_.pickBy方法,该方法将返回具有通过过滤器的键/值对的对象:

let filteredResults = _.pickBy(results, value => value.length > 0)

您可以使用reduce并访问每个结果的键和值,对其进行评估并将其推送到新对象。 这是如何做:

let filteredResults = _.reduce(results, (result, value, key) => {
    if (value.length > 0) {
        result[key] = value;
    }
    return result;
}, {});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM