我的代码如下:
let filters = [
{name: "MAKE", values:
[
{
Volkswagen: {active: true, make: "Volkswagen"},
Skoda: {active: true, make: "Skoda"}
}
]
}
]
function getFilterValues(){
return filters.filter(f => {
if(f.name == "MAKE"){
return f.values.filter(i => {
Object.keys(i).map(key => {
return key;
});
});
}
});
}
var div = document.getElementById('output');
div.innerHTML = getFilterValues();
我想遍历过滤器以获取对象键。
因此,我想要的结果是,在这种情况下 Volkswagen,Skoda 。但我的函数getFilterValues并没有返回我想要的东西。
这是jsfiddle。
有什么建议吗?
答案 0 :(得分:1)
您可以使用Object.keys()
获取密钥列表。
var filters = [{
name: "MAKE",
values: [{
Volkswagen: {
active: true,
make: "Volkswagen"
},
Skoda: {
active: true,
make: "Skoda"
}
}]
}];
for (i = 0; i < filters.length; i++) {
if (typeof filters[i].values == "object") {
console.log(Object.keys(filters[i].values[0]));
}
}
答案 1 :(得分:1)
主要问题在于过滤功能。您希望map
,因为使用过滤器,您返回true / false是否应将元素包含在结果代码中。看看这个差异:https://www.diffchecker.com/CX6hOoxo
这有效:https://jsfiddle.net/o93Lm0rc/101/
let filters = [
{name: "MAKE", values:
[
{
Volkswagen: {active: true, make: "Volkswagen"},
Skoda: {active: true, make: "Skoda"}
}
]
}
]
function getFilterValues(){
return filters.map(f => {
if(f.name == "MAKE"){
return f.values.map(i => {
return Object.keys(i).map(key => {
return key;
});
});
}
});
}
var div = document.getElementById('output');
div.innerHTML = getFilterValues();