Javascript 从搜索词列表创建绑定列表投影
我正试图从一组搜索词中创建一个过滤列表投影。例如,如果我有一个搜索词,我可以这样做:Javascript 从搜索词列表创建绑定列表投影,javascript,windows-8,winjs,Javascript,Windows 8,Winjs,我正试图从一组搜索词中创建一个过滤列表投影。例如,如果我有一个搜索词,我可以这样做: if (options.groupKey == "filtered") { this._items = Data.getItemsFromGroup(this._group); var query = Windows.Storage.ApplicationData.current.localSettings.values["filters"]; this._items = this._i
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
}
})
}
Cisco
Microsoft
Dell
但是,如果“过滤器”本地设置是一个CRLF分隔的列表,该怎么办
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
}
})
}
Cisco
Microsoft
Dell
目前,搜索将把每个术语与“Cisco/nMicrosoft/nDell”进行比较,这显然是行不通的<代码>内容。搜索不接受数组。我是否应该以某种方式在
createFiltered
函数中执行一个循环?这似乎不符合投影的精神。一般公认的方法是什么?如何在每个过滤器都是属性的设置中存储和对象?那对你有用吗
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;
})
}
查询
对象如下所示:
{
Cisco: "",
Microsoft: "",
Dell: ""
}
这有意义吗
edit:对代码做了一点更改,因为我相信if(query[item])
会因为javascript类型转换而始终返回false
,谢谢!我还没有把它付诸实施,但它看起来至少会是我想要做的事情的一个好的开始。