在 node/expressjs 中筛选 json 个对象
Filtering a json object in node/expressjs
我正在寻找过滤器 json 文件,具体取决于用户在 express js 应用程序中使用下划线从上一页输入的内容。这是我到目前为止所做的:
var fs = require('fs');
var contents = fs.readFileSync("public/files/testFile.json");
var obj = JSON.parse(contents);
var gender = req.query.gender
var filtered = _.where(obj.elements, {gender: true}); // elements is the array I want to filter
我要过滤的 json 如下:
{
"elements": [
{
"id": 0,
"man": true,
"url": "https://pbs.twimg.com/media/CfRi_u8aaW8AfQvI7v.jpg"
},
{
"id": 1,
"Woman": true,
"url": "https://pbs.twimg.com/media/CfZ-8ikafWsAAngQGP.jpg"
}
]
}
请注意,当我通过 "man" 更改变量性别时,它的工作原理 properly.Looks 就像使用变量进行搜索一样不起作用。我有 2 个问题:
- 我该怎么做才能让它发挥作用?
- 有没有更好的方法来面对这个问题?
您可以构建一个新的 Json 对象。
var obj = {};
obj[req.query.gender] = true;
var filtered = _.where(obj.elements, obj);
尽管我可能建议使用值为 Male/Female 的性别字段,而不是 Male:true 或 Female:true。
你为什么不试试下面的方法:
var _ = require('underscore');
var elem = {
"elements": [
{
"id" : 0,
"man": true,
"url": "https://pbs.twimg.com/media/CfRi_u8W8AQvI7v.jpg"
},
{
"id" : 1,
"woman": true,
"url" : "https://pbs.twimg.com/media/CfZ-8ikWsAAnQGP.jpg"
}
]
};
var gender = 'man';
var filtered = _.filter(elem.elements, function(element){
return _.has(element, gender) && element[gender] === true;
});
console.log(filtered);
我在这里硬编码了性别的价值。您可以从应用程序中的查询中读取它。我认为该片段几乎是不言自明的。
我正在寻找过滤器 json 文件,具体取决于用户在 express js 应用程序中使用下划线从上一页输入的内容。这是我到目前为止所做的:
var fs = require('fs');
var contents = fs.readFileSync("public/files/testFile.json");
var obj = JSON.parse(contents);
var gender = req.query.gender
var filtered = _.where(obj.elements, {gender: true}); // elements is the array I want to filter
我要过滤的 json 如下:
{
"elements": [
{
"id": 0,
"man": true,
"url": "https://pbs.twimg.com/media/CfRi_u8aaW8AfQvI7v.jpg"
},
{
"id": 1,
"Woman": true,
"url": "https://pbs.twimg.com/media/CfZ-8ikafWsAAngQGP.jpg"
}
]
}
请注意,当我通过 "man" 更改变量性别时,它的工作原理 properly.Looks 就像使用变量进行搜索一样不起作用。我有 2 个问题:
- 我该怎么做才能让它发挥作用?
- 有没有更好的方法来面对这个问题?
您可以构建一个新的 Json 对象。
var obj = {};
obj[req.query.gender] = true;
var filtered = _.where(obj.elements, obj);
尽管我可能建议使用值为 Male/Female 的性别字段,而不是 Male:true 或 Female:true。
你为什么不试试下面的方法:
var _ = require('underscore');
var elem = {
"elements": [
{
"id" : 0,
"man": true,
"url": "https://pbs.twimg.com/media/CfRi_u8W8AQvI7v.jpg"
},
{
"id" : 1,
"woman": true,
"url" : "https://pbs.twimg.com/media/CfZ-8ikWsAAnQGP.jpg"
}
]
};
var gender = 'man';
var filtered = _.filter(elem.elements, function(element){
return _.has(element, gender) && element[gender] === true;
});
console.log(filtered);
我在这里硬编码了性别的价值。您可以从应用程序中的查询中读取它。我认为该片段几乎是不言自明的。