假设我有一个称为颜色的对象,
const colors = {
green: "yes",
red: "no",
yellow: "yes"
};
现在,如何获取基于值的结果。像,对象应排除具有“否”的值。 以下是理想的结果:
colors = {
green: "yes",
yellow: "yes"
};
我的尝试
Object.keys(colors).filter(c => { if(colors[c]==="yes"){ return arr4.push(colors)}})
答案 0 :(得分:1)
首先,请尝试格式化问题以提高可读性。
您可以使用本机JS函数过滤对象。见下文:
const colors = {
green: 'yes',
red: 'no',
yellow: 'yes'
}
const filtered = Object.keys(colors)
.filter(key => colors[key] === 'yes')
.reduce((obj, key) => {
obj[key] = colors[key];
return obj;
}, {});
这将返回一个对象
{green: "yes", yellow: "yes"}
答案 1 :(得分:1)
简单且希望易于理解:
const colors = {
green: "yes",
red: "no",
yellow: "yes",
};
for (const key of Object.keys(colors)) {
if (colors[key] === "no") {
delete colors[key];
}
}
这对于新的fromEntries()
方法也是一个很好的用例。如果您喜欢冒险,请尝试以下方法:
const colors = {
green: "yes",
red: "no",
yellow: "yes",
};
const newColors = Object.fromEntries(
Object.entries(colors)
.filter(([key, value]) => value === "yes")
);
它具有保持原始对象不变的附加好处,尽管我发现它比我的第一个建议更难读。
答案 2 :(得分:0)
尝试:
const colors = {
green: 'yes',
red: 'no',
yellow: 'yes'
}
let result = {}
Object.keys(colors).map((key) => { if(colors[key] == 'yes') result[key] = colors[key]})
console.log(result)
答案 3 :(得分:0)
赞
const colors = {
green:"yes",
red:"no",
yellow:"yes"
}
let filteredColors = {}
let filteredKeys = Object.keys(colors).filter(key => {
return key==="yes"
})
filteredKeys.map(key => {
filteredColors[key] = "yes"
})