我有一个输入,我想通过ID找到一个对象。目前我正在返回两个对象,但我想要的是如果我搜索' 01'我只会返回第一个对象。我已经尝试过下划线_.map来做到这一点,但它没有给出我追求的结果。
var getById = function() {
var deferred = Q.defer(),
result;
result = items;
if (!result) {
deferred.reject('item not found');
} else {
deferred.resolve(result);
}
return deferred.promise;
};
JSON:
[{
"id": "01",
"name": "test1",
"orderItems": [
{
"productNumber": "TESTa",
"quantity": 2,
},
{
"productNumber": "TESTb",
"quantity": 4,
},
{
"productNumber": "TESTc",
"quantity": 6,
}
]
},{
"id": "02",
"name": "test2",
"orderItems": [
{
"productNumber": "TESTe",
"quantity": 2,
},
{
"productNumber": "TESTf",
"quantity": 7,
},
{
"productNumber": "TESTg",
"quantity": 6,
}
]
}]
答案 0 :(得分:1)
您可以使用_.filter()
查看列表中的每个值,返回通过真值测试(谓词)的所有值的数组。
result = _.filter(items, function(item){
return item.id == '01';
});
或者,_.findWhere
查看列表并返回与属性中列出的所有键值对匹配的第一个值。
result = _.findWhere(items, {id : '01'});
答案 1 :(得分:1)
var result = _.find(myItems, function(item) { return item.id === '01'; }
答案 2 :(得分:1)
如果您发现符合条件的单项,请使用 _。find()
查看列表中的每个值,返回第一个值 通过真相测试
var _exist = _.find(_items, function (item) {
return item.id == your_id;
});
如果您找到符合条件的所有项目,请使用 _。过滤器()
查看列表中的每个值,返回所有的数组 通过真值测试的价值
var _exist = _.filter(_items, function (item) {
return item.id == your_id;
});
在此处抓取完整的文档: http://underscorejs.org/