查找子属性键值,如果值为真,则返回父对象 LODASH



给出这个数据。 我正在尝试返回所有 data.objects 谁在哪里属性可以有饼干 : 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 有建议吗?

如果你使用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>

最新更新