我有一个属性为true / false的对象,我需要返回一个只有属性名称为true的数组。
我尝试了Object.entries,但不确定现在如何创建数组。
const inputs = {
a: true,
b: true,
c: false
}
// result should be ['a','b']
// i have tried so far this one with no success
// const result = Object.entries(inputs).map((x, idx) => console.log(x))
答案 0 :(得分:6)
Object.keys(inputs).filter(key => inputs[key])
答案 1 :(得分:1)
使用Use my JSFiddle for the code.(由MDN描述为
创建一个新数组,其中包含所有通过提供的功能实现的测试的元素
在Object.keys上调用它,它是对象的内置数组:
返回给定对象属性名称的数组
所以,把它们放在一起,看起来就像
const inputs = {
a: true,
b: true,
c: false
}
console.log(inputs); // Output: {a: true, b: true, c: false}
const arr = Object.keys(inputs).filter(keyName => inputs[keyName]);
console.log(arr); // Output: ["a", "b"]
答案 2 :(得分:0)
仅提供对象键,请使用filter
:
赞:
const inputs = {
a: true,
b: true,
c: false
};
var true_inputs = Object.keys(inputs).filter(key => inputs[key]);
console.log(true_inputs);
或Jquery map
:
const inputs = {
a: true,
b: true,
c: false
};
var true_inputs = $.map(inputs, function(n, i) { if(n) return i });
console.log(true_inputs);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
要获取整个对象,请使用for .. in
:
像这样:
const inputs = {
a: true,
b: true,
c: false
};
var true_inputs = {};
for(var key in inputs){
if(inputs[key])
true_inputs[key]=inputs[key];
}
console.log(inputs);
console.log(true_inputs);