通过 nodejs 过滤对象数组

Filter object array via nodejs

我有一个对象数组,如下所示,

{
  "data": [
            {
              "name": "HTML",
              "description": "Hyper Text Markup Language"
            },
            {
              "name": "CSS",
              "description": "Cascading Style Sheet"
            },
            {
              "name": "JS",
              "description": "Javascript"
            }
          ]
}

我从这个端点 /get/technologies 得到上面的对象数组作为响应,假设如果这个端点会有一个查询字符串,就像这样 /get/technologies?q=CSS 我如何过滤响应以呈现以下内容,

{
  "data": [
            {
              "name": "CSS",
              "description": "Cascading Style Sheet"
            }
          ]
}

我有一个 node/express 应用程序所以在控制器中如果我这样做 "req.query.q" 那么我可以获取查询参数,使用该查询参数我如何过滤原始对象数组..我来了跨越一些 npm 包,但不确定哪个适合我的需要,

https://www.npmjs.com/package/filter-array
https://www.npmjs.com/package/object-filter
https://www.npmjs.com/package/array-filter
https://www.npmjs.com/package/array-query

如果我可以获取查询参数并找到匹配的文本,那也很好。例如,如果查询参数只是 "SS",那么结果应该同时呈现 CSS 和JS 因为文本 "S" 存在于它们中。

Working Example

试试这个:

var d = [
            {
              "name": "HTML",
              "description": "Hyper Text Markup Language"
            },
            {
              "name": "CSS",
              "description": "Cascading Style Sheet"
            },
            {
              "name": "JS",
              "description": "Javascript"
            }
          ];

var a = d.filter(function(el) {
  return el.name === 'CSS';
});

你可以直接使用 filter:

var data = [
  // the array to be filtered
];

var filteredArray = data.filter(item => (item.name === req.query.q));