带有空数组的 lodash findwhere
lodash findwhere with empty array
我在使用 lodash 时遇到了一些问题 _.findWhere(与 _.where 相同)
var testdata = [
{
"id": "test1",
"arr": [{ "a" : "a" }]
},
{
"id": "test2",
"arr": []
}
];
_.findWhere(testdata, {arr : [] });
//--> both elements are found
我正在尝试从测试数据中提取元素,其中 arr 是一个空数组,但 _.where 还包括具有非空数组的元素。
我也用_.matchesProperty测试过,但不行,结果一样。
我确定我错过了一些简单的东西,但看不到什么:s
请帮忙:)
为此,您想要 isEmpty():
var collection = [
{ id: 'test1', arr: [ { a : 'a' } ] },
{ id: 'test2', arr: [] }
];
_.find(collection, function(item) {
return _.isEmpty(item.arr);
});
// → { id: 'test2', arr: [] }
_.reject(collection, function(item) {
return _.isEmpty(item.arr);
});
// → [ { id: 'test1', arr: [ { a : 'a' } ] } ]
您还可以使用高阶函数,例如 flow(),因此可以抽象您的回调:
var emptyArray = _.flow(_.property('arr'), _.isEmpty),
filledArray = _.negate(emptyArray);
_.filter(collection, emptyArray);
// → [ { id: 'test2', arr: [] } ]
_.filter(collection, filledArray);
// → [ { id: 'test1', arr: [ { a : 'a' } ] } ]
我在使用 lodash 时遇到了一些问题 _.findWhere(与 _.where 相同)
var testdata = [
{
"id": "test1",
"arr": [{ "a" : "a" }]
},
{
"id": "test2",
"arr": []
}
];
_.findWhere(testdata, {arr : [] });
//--> both elements are found
我正在尝试从测试数据中提取元素,其中 arr 是一个空数组,但 _.where 还包括具有非空数组的元素。
我也用_.matchesProperty测试过,但不行,结果一样。
我确定我错过了一些简单的东西,但看不到什么:s
请帮忙:)
为此,您想要 isEmpty():
var collection = [
{ id: 'test1', arr: [ { a : 'a' } ] },
{ id: 'test2', arr: [] }
];
_.find(collection, function(item) {
return _.isEmpty(item.arr);
});
// → { id: 'test2', arr: [] }
_.reject(collection, function(item) {
return _.isEmpty(item.arr);
});
// → [ { id: 'test1', arr: [ { a : 'a' } ] } ]
您还可以使用高阶函数,例如 flow(),因此可以抽象您的回调:
var emptyArray = _.flow(_.property('arr'), _.isEmpty),
filledArray = _.negate(emptyArray);
_.filter(collection, emptyArray);
// → [ { id: 'test2', arr: [] } ]
_.filter(collection, filledArray);
// → [ { id: 'test1', arr: [ { a : 'a' } ] } ]