Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何过滤对象';根据属性的值来定义属性?_Javascript - Fatal编程技术网

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会出于一个很好的理由拒绝这一点。