2016-12-24 3 views
2
[ 
    { 
    "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 
    } 
] 

예제 위의 배열을 참조하십시오.JSON object expressJS/UnderscoreJS

특정 쿼리를 만족하는 개체 만 가져오고 싶습니다.

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); 


}); 

어떻게 작동합니까? 어떻게 함수를 밑줄의 술어로 입력 할 수 있습니까?

답변

0

올바른 콜백을 사용하여 일반 자바 스크립트에서 Array#filter을 사용할 수 있습니다. 인수가 아닌 함수 값 개체 :

function byCompleted(item) { 
 
    return item.completed; 
 
} 
 

 
function byId(id) { 
 
    return function (item) { 
 
     return item.id === id; 
 
    }; 
 
} 
 

 

 
var data = [{ 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 }]; 
 

 
console.log(data.filter(byCompleted)); 
 
console.log(data.filter(byId(2)));

0

where가 키를 얻어 밑줄. 원하는 속성을 알고 있으면 편리합니다.

예 :

var completed = _.where(todos,{completed:true});

var gymCompleted = _.where(todos,{completed:true,description:"Hit the gym"})

where 복귀 지정된 특성을 포함하는 모든 요소가 findWhere 제 매칭 소자를 반환한다.

필터링 기준이 더 복잡하고 조건자를 지정해야하는 경우 밑줄 또는 기본 JS

을 통해 filter을 사용해야합니다.