我有一个从SQL查询返回的json对象。我想在发送回前端之前过滤掉json键。如果密钥为真,请返回到我正在寻找的前端。
在我的服务器文件中,有这一行。
let returned_data = Object.entries(queried_data[0]).forEach((key, value) => {
return value === true ? key : null
})
res.json(returned_data)
这是我在SQL查询后返回的json的示例。
[{first_name: 'testing', has_apple: true, has_pear: true, has_beans: false}]
我希望returned_data
拥有['has_apple', 'has_pear']
。目前,我对returned_data
答案 0 :(得分:2)
forEach
不会返回map
会返回的任何内容。此外,Object.entries
返回一个数组数组,因此您需要在map函数中解构该值以获取键和值。将您的代码更改为
let returned_data = Object.entries(queried_data[0]).map(([key, value]) => {
return value === true ? key : null
})
res.json(returned_data)
答案 1 :(得分:1)
正如其他答案所说,forEach()不返回任何内容,因此您必须使用map()或创建一个数组,如果为true,则将值推入该数组中
var new_data=[];
Object.entries(queried_data[0]).forEach((key, value) => {
if( value===true){new_data.push(key)}
});
console.log(new_data);
答案 2 :(得分:0)
我认为您正在寻找
const returned_data = Object.entries(queried_data[0]).map((key, value) => {
return value === true ? key : null
}).filter(key => {
return key !== null
});
或者简单地
const returned_data = Object.keys(queried_data[0]).filter(key, queried_data[0][key] === true);
请勿使用forEach
!