Javascript 按描述筛选JSON对象expressJS/parentareJS

Javascript 按描述筛选JSON对象expressJS/parentareJS,javascript,json,node.js,underscore.js,Javascript,Json,Node.js,Underscore.js,上面的示例数组 我想说的是,只获取满足某个查询的对象 [ { "id": 1, "description": "Take out the trash", "completed": false }, { "id": 2, "description": "Get food tonight", "completed": false }, { "id": 3, "description": "Hit the gym",

上面的示例数组

我想说的是,只获取满足某个查询的对象

[
  {
    "id": 1,
    "description": "Take out the trash",
    "completed": false
  },
  {
    "id": 2,
    "description": "Get food tonight",
    "completed": false
  },
  {
    "id": 3,
    "description": "Hit the gym",
    "completed": true
  }
]
这是怎么回事?如何将函数作为谓词输入下划线内。where

您可以在普通Javascript中使用正确的回调

功能已完成(项目){
返回项目。已完成;
}
函数byId(id){
返回函数(项目){
返回项.id==id;
};
}
var data=[{id:1,描述:“倒垃圾”,完成:false},{id:2,描述:“今晚吃东西”,完成:false},{id:3,描述:“去健身房”,完成:true}];
console.log(data.filter(byCompleted));

console.log(data.filter(byId(2))
下划线
,其中
将key:value对象作为其参数,而不是函数。如果你知道你想要什么样的房产,那就很方便了

示例:

var completed=\其中(todos,{completed:true})

var-gympleted=\u0.where(todos,{completed:true,description:“去健身房”})

where
返回包含指定属性的所有元素,
findWhere
返回第一个匹配元素

如果您的筛选条件更复杂,并且需要指定一个谓词,那么您必须通过下划线或本机JS使用
筛选

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var _ = require('underscore');

app.get('/todos/query/:des', function (req, res){
    var descriptionToFilter = req.params.des;
    console.log(descriptionToFilter);

    var filteredDesArr = _.where(todos,function(todo){
        todo.description.contains(descriptionToFilter.toLowerCase());
    });

    res.send(filteredDesArr);


});