如何使用Lodash使这种映射更简单?

时间:2016-11-28 20:59:01

标签: javascript object lodash

我有以下对象:

var config = {
    apps: false,
    transfers: false,
    approvals: true
};

我想知道如何使用Lodash遍历config对象中的每个键,并找出第一次出现值true的键。在上面的示例中,我希望输出为approvals。如果transfers的值为true,我希望输出为transfers

基本上,我想要一种更清洁的方法来做到这一点:

if (config.apps) {
    answer = 'apps';
} else if (config.transfers) {
    answer = 'transfers';
} else if (config.approvals) {
    answer = 'approvals';
}

谢谢!

3 个答案:

答案 0 :(得分:2)

您可以使用_.findKey()

var config = { apps: false, transfers: false, approvals: true };

var answer = _.findKey(config);

console.log(answer);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>

或者,如果没有lodash,您可以Array.prototype.reduce()使用Object.keys()

var config = { apps: false, transfers: false, approvals: true };

var answer = Object.keys(config).reduce(function(answer, key) { 
  return value = config[key] ? key : answer;
}, '');

console.log(answer);

答案 1 :(得分:0)

不需要lodash:

var config = {
    apps: false,
    transfers: false,
    approvals: true
};

Object.keys(config).find((key) => {
  return config[key];
});

答案 2 :(得分:0)

比较新的方法,然后Object.keys是entries,您可以检索密钥和值

&#13;
&#13;
let config = {apps: false, transfers: false, approvals: true}
let [key, value] = Object.entries(config).find(([key, val]) => val)

console.log(key, value)
&#13;
&#13;
&#13;