我是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 ] ]
的结果。
密钥1
和2
在哪里?
答案 0 :(得分:2)
_.filter
方法可以接受一个对象作为它的第一个参数,但它只返回一个数组,其中包含原始对象的可接受值。您可能希望使用_.pickBy
方法,它将返回一个带有通过过滤器的键/值对的对象:
let filteredResults = _.pickBy(results, value => value.length > 0)
答案 1 :(得分:1)
您可以使用reduce
并访问每个结果的键和值,对其进行评估并将其推送到新对象。以下是:
let filteredResults = _.reduce(results, (result, value, key) => {
if (value.length > 0) {
result[key] = value;
}
return result;
}, {});