[英]How to get/filter all results from JSON file with underscore.js
我有这个( 缩短了问题 )JSON文件:
[
{
"product":"aardappelen gebakken",
"quantity":"100gr",
"carbohydrates":"19,3"
},
{
"product":"aardappelen pikant",
"quantity":"100gr",
"carbohydrates":"3"
},
{
"product":"aardappelmeel",
"quantity":"100gr",
"carbohydrates":"80"
}
]
我想做的是:
搜索一个产品,并得到它的所有内容,比如当我搜索“aardappelmeel”时,我得到产品,数量和碳水化合物的关键值,我用这个代码做到这一点:
搜索词目前是硬编码的,这将是后来的一个var。
$(function() {
$.getJSON( "js/data.json").fail(function(jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
}).done(function(data) {
var carbohydratesResult = getCarbohydrates(data, 'aardappelmeel');
console.log(carbohydratesResult);
});
});
function getCarbohydrates(arr, searchTerm){
var result;
if(searchTerm === '') {
result = 'No searchterm';
}
else {
result = _.where(arr, {product: searchTerm});
}
return result;
}
这得到1个结果:
问题:当我搜索“aardappelen”时,我没有得到结果,它应该是2,因为有2个产品包含名称“aardappelen”。 我该怎么做呢?
我使用jQuery,Underscore。 如果不需要Underscore,我可以告诉我如何修改我的代码,以便在“product”值包含搜索词时获得更多结果。
我可能会说这不需要下划线(不是最佳包含整个js库只需使用单个函数)。 仅使用JavaScript搜索文本永远不会有趣。 你可能最好编写一些循环结果集的regex函数并尝试匹配一些文本。
如果可能的话,我会尝试在服务器端实现搜索功能,并在ajax请求中返回这些结果。
JS解决方案的粗略示例......
var searchText = 'blah',
matches = [];
for(var i = 0; i < results.length; i++) {
var reg = new RegExp(searchText);
if(results[i].product.match(reg)) matches.push(results[i]);
}
return matches;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.