提供此数据。 我试图返回所有data.objects属性canHaveCookie:true
data : {
name1: {
canHaveCookie: true,
anotherProp : false
},
name2: {
canHaveCookie: false,
anotherProp : false
},
name3: {
canHaveCookie: true,
anotherProp : false
}
}
以下是我的尝试:
var dataAttrObj = grandparent.data,
tmpProcessObj = [];
tmpProcessObj = _.pickBy(dataAttrObj, function(item) {
console.log('item is', item);
return _.includes(item, {canHaveCookie: true});
// console.log('objs here', _.has(item, {canStopProcessing: true}) );
// return _.some(item, {canStopProcessing: true});
// _.some(item, {canHaveCookie: true}));
// return _.has(item, ['canHaveCookie', true]);
return _.includes(item, {canHaveCookie: true});
});
我期望得到的是
data : {
name1: {
canHaveCookie: true,
anotherProp : false
},
//notice name2 is not here because name2 canHaveCookie is false
name3: {
canHaveCookie: true,
anotherProp : false
}
}
有没有人有使用lodash的建议?
答案 0 :(得分:2)
如果您使用pickBy()
是lodash,那么您只需要检查函数canHaveCookie
是否为真。函数的第一个参数是当前值,所以你只需要返回它的canHaveCookie键(如果它是真的那么它将是真实的。)
例如:
_.pickBy(object, value => value.canHaveCookie)
段:
var obj = {
data: {
name1: {
canHaveCookie: true,
anotherProp : false
},
name2: {
canHaveCookie: false,
anotherProp : false
},
name3: {
canHaveCookie: true,
anotherProp : false
}
}
}
var result = _.pickBy(obj.data, value => value.canHaveCookie)
console.log(result)

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
&#13;