Javascript 基于值获取对象关键帧
我有一个用例,在这个用例中,我有一个不同值的对象,我需要得到所有这些具有特定值的键。例如,下面是一个示例对象:Javascript 基于值获取对象关键帧,javascript,arrays,object,lodash,Javascript,Arrays,Object,Lodash,我有一个用例,在这个用例中,我有一个不同值的对象,我需要得到所有这些具有特定值的键。例如,下面是一个示例对象: myObject = { Person1: true, Person2: false, Person3: true, Person4: false }; 键名称会有所不同,但有效值为true或false。我想得到一个值为true的名称数组: myArray2 = [ 'Person1', 'Person3 ]; 我一直在尝试将各种lo
myObject = {
Person1: true,
Person2: false,
Person3: true,
Person4: false
};
键名称会有所不同,但有效值为true或false。我想得到一个值为true的名称数组:
myArray2 = [
'Person1',
'Person3
];
我一直在尝试将各种lodash函数组合使用,例如u.key()和u.filter,但没有成功。我怎样才能做到这一点?我对纯JS或Lodash选项持开放态度
更新:我接受了mhodges下面的答案作为被接受的答案,尽管其他人也给了我同样的答案。基于此,我提出了一个Lodash版本:
var myArray = _(myObject).keys().filter(function(e) {
return myObject[e] === true;
}).value();
您可以使用
Object.keys()
和filter()
var myObject={
是的,
人2:错,
是的,
人4:错
};
var result=Object.keys(myObject).filter(函数(e){
返回myObject[e]==true;
})
console.log(result)
您可以使用Object.keys()
和filter()
执行此操作
var myObject={
是的,
人2:错,
是的,
人4:错
};
var result=Object.keys(myObject).filter(函数(e){
返回myObject[e]==true;
})
console.log(结果)
使用Object.keys():
替代解决方案:
var keys = [];
for (var key in object) {
if (object.hasOwnProperty(key)) {
keys.push(key);
}
}
console.log(keys);
不要忘记在hasOwnProperty()
的帮助下检查键
,否则这种方法可能会导致结果中显示不需要的键。使用Object.keys()
替代解决方案:
var keys = [];
for (var key in object) {
if (object.hasOwnProperty(key)) {
keys.push(key);
}
}
console.log(keys);
不要忘记在hasOwnProperty()
的帮助下检查键
,否则这种方法可能会导致结果中出现不需要的键
。如果我正确理解您的问题,您应该能够使用basic.filter()
myObject = {
Person1: true,
Person2: false,
Person3: true,
Person4: false
};
var validKeys = Object.keys(myObject).filter(function (key) {
return myObject[key] === true;
});
如果我正确理解您的问题,您应该能够使用basic.filter()
进行此操作
myObject = {
Person1: true,
Person2: false,
Person3: true,
Person4: false
};
var validKeys = Object.keys(myObject).filter(function (key) {
return myObject[key] === true;
});
由于Lodash被标记:使用pickBy
可以过滤值(以及使用\uKeys
获得的键):
var myObject={Person1:true,Person2:false,Person3:true,Person4:false};
var myArray2=0.keys(0.pickBy(myObject));
console.log(myArray2)代码>
自Lodash被标记以来:使用pickBy
可以过滤值(以及使用\uKeys
获得的键):
var myObject={Person1:true,Person2:false,Person3:true,Person4:false};
var myArray2=0.keys(0.pickBy(myObject));
console.log(myArray2)代码>
谢谢你,内纳德。不幸的是,目前我仅限于ES5。ES5语法是什么?谢谢你。不幸的是,目前我仅限于ES5。ES5语法是什么?哦,很好。我错过了。谢谢。哦,很好。我错过了。谢谢