Javascript 如何过滤对象';根据属性的值来定义属性?
假设我有一个叫做颜色的物体Javascript 如何过滤对象';根据属性的值来定义属性?,javascript,Javascript,假设我有一个叫做颜色的物体 const colors={ 绿色:“是的”, 红色:“不”, 黄色:“是的” }; 现在,如何基于这些值获得结果。与此类似,对象应该排除具有“no”的值。 以下是预期结果: 颜色={ 绿色:“是的”, 黄色:“是的” }; 我的尝试: Object.keys(colors).filter(c=>if(colors[c]==“yes”){return arr4.push(colors)}) 首先,尝试设置问题的格式,以提高可读性 您可以使用本机JS函数过滤对象。见
const colors={
绿色:“是的”,
红色:“不”,
黄色:“是的”
};
现在,如何基于这些值获得结果。与此类似,对象应该排除具有“no”的值。
以下是预期结果:
颜色={
绿色:“是的”,
黄色:“是的”
};
我的尝试:
Object.keys(colors).filter(c=>if(colors[c]==“yes”){return arr4.push(colors)})
首先,尝试设置问题的格式,以提高可读性
您可以使用本机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"}
简单易懂:
const colors={
绿色:“是的”,
红色:“不”,
黄色:“是的”,
};
for(对象的常量键。键(颜色)){
如果(颜色[键]=“否”){
删除颜色[键];
}
}
试试这个:
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)
像这样
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"
})
还请包括您的尝试。Object.keys(colors).filter(c=>{if(colors[c]==“yes”){return arr4.push(colors)}以上是我尝试过的,但如果您的选项是“yes”或“no”,则它“不是我想要的旁注”,您可能应该使用
true
和false
来表示布尔值。这不起作用,因为您无法编辑常量颜色。尝试使用let colors=…事实上,您可以(如果您不相信我,请尝试上面的代码片段:-))。对对象的引用是常量,但对象本身不是。您可以更改它的属性,甚至可以随意删除它们。Javascript中的const
与Java中的final
类似。在浏览器中也可以,但大多数linter会出于一个很好的理由拒绝这一点。