【发布时间】:2015-09-14 20:54:20
【问题描述】:
所以我真的很想复制我以前的failed question,因为我真的无法正确解释自己,因此没有得到答案(也没有真正解决我的问题)。
有 JSON:
[
{
"id": 2,
"name": "Google",
"country": "Sweden"
},
{
"id": 3,
"name": "Google",
"country": "USA"
},
{
"id": 9,
"name": "Google",
"country": "Ukraine"
},
{
"id": 10,
"name": "Bing",
"country": "Sweden"
}
]
我想我之前没有做的是发布我到目前为止的内容并更好地解释我需要什么。这就是我现在拥有的:
$scope.loadSearchEngines = function ($query) {
return $http.get('search-engines.json', {cache: true}).then(function (response) {
var tags = response.data;
return tags.filter(function (tag) {
return tag.name.toLowerCase().indexOf($query.toLowerCase()) != -1;
});
});
};
这个过滤器限制我只能搜索 name 属性,而理想情况下我想搜索 any 属性(或者是所有属性),我想要过滤器使用一组参数,以便每个单词单独查看对象中的每个属性并找到匹配项。
在上一篇文章中,有人为它发布了一个 for 循环,但这正是我想要避免的那种不直观的事情。 我知道我想要的结果是什么,但我只是想不出一种方法(lodash/underscore 似乎几乎做了这样的事情,但我认为某处缺少一些东西,或者我真的不擅长理解文档)。
例子:
如果我写“google sweden”,它只会显示 1 个结果,如果我写“sweden”,它将显示来自 google 的结果和来自 bing 的结果。 如果我写“in”,我猜它应该显示“bING”和谷歌“ukraINe”。
起初这似乎没有那么麻烦,但我无法使用过滤器真正解决这个问题。我真的没有任何想法要发布,因为它们非常糟糕,这对我来说真的是一个灰色地带。
【问题讨论】:
-
您要在对象的所有值中搜索关键字?
标签: javascript json underscore.js filtering lodash