我正在尝试从搜索词集合中创建过滤列表投影。例如,如果我有一个搜索词,我可以这样做:
if (options.groupKey == "filtered") {
this._items = Data.getItemsFromGroup(this._group);
var query = Windows.Storage.ApplicationData.current.localSettings.values["filters"];
this._items = this._items.createFiltered(function (item) {
if (item.content.search(query) > -1) {
return true
} else {
return false
}
})
}
但是,如果'过滤器'本地设置是CRLF分隔列表,如下所示:
Cisco
Microsoft
Dell
目前,搜索会将每个术语与'Cisco / nMicrosoft / nDell'进行比较,这显然不起作用。 content.search
不接受数组。我应该以某种方式在createFiltered
函数中执行循环吗?这似乎不符合预测的精神。普遍接受的方法是什么?
答案 0 :(得分:1)
如果在每个过滤器属性的"filters"
设置中存储和对象怎么办?那会对你有用吗?
if (options.groupKey == "filtered") {
this._items = Data.getItemsFromGroup(this._group);
var query = Windows.Storage.ApplicationData.current.localSettings.values["filters"];
this._items = this._items.createFiltered(function (item) {
return Object.keys(query).indexOf(item) > -1;
})
}
query
对象如下:
{
Cisco: "",
Microsoft: "",
Dell: ""
}
这有意义吗?
修改对代码进行了一些更改,因为我认为if (query[item])
总是会返回false
,因为javascript type-casting