提供此数据。
我正在尝试返回所有can.HaveCookie属性为true的data.objects

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()为破折号,则只需在函数中检查canHaveCookie是否为true。该函数的第一个参数是当前值,因此您只需要返回其canHaveCookie键(如果为true,则为真)。

例如:

_.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>

关于javascript - 查找子属性键值,如果值为true,则返回父对象LODASH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50164980/

10-12 15:25