Javascript 语法问题。击倒。用于过滤

Javascript 语法问题。击倒。用于过滤,javascript,jquery,knockout.js,syntax,Javascript,Jquery,Knockout.js,Syntax,我正在使用jquery、Json数据和knockout。我所做的是获取一个数据,添加到绑定表中,并为name添加一个过滤器字段 问题是,过滤器字段的工作方式与我希望的不同。因为它与整个词相匹配。这就是代码: self.filter = ko.observable(); self.tickets = ko.computed(function () { var filter = self.filter(), arr = [];

我正在使用jquery、Json数据和knockout。我所做的是获取一个数据,添加到绑定表中,并为name添加一个过滤器字段

问题是,过滤器字段的工作方式与我希望的不同。因为它与整个词相匹配。这就是代码:

self.filter = ko.observable();
        self.tickets = ko.computed(function () {
            var filter = self.filter(),
                arr = [];
            if (filter) {
                ko.utils.arrayForEach(self.ticketViewModel(), function (item) {
                    if (item.Name() == filter || item.Status() == filter) {
                        arr.push(item);
                    }

                });
            } else {
                arr = self.ticketViewModel();
            }
            return arr;

        });
所以我想让它从第一个字母开始过滤。我发现了几种方法,它们应该可以工作,但我不能得到结果,因为我总是会遇到各种语法错误。也许谁用过这些可以帮我。它的代码是:

    self.filter = ko.observable().toString().toLowerCase();
    self.tickets = ko.computed(function () {           
        var filter = self.filter(), 
            arr = [];
        if (!filter) {
            arr = self.ticketViewModel();
        } else {
            ko.utils.arrayFilter(self.ticketViewModel(), function (item) {
                if (ko.utils.stringStartsWith(item.Name().toLowerCase()), filter)
                    arr.push(item);
            })
        }

        return arr;
    });
我得到的最后一个错误是-uncaughttypeerror:string不是第行的函数

var filter = self.filter()
同样的错误,我得到了几次,但在修复后,我得到了另一个错误,当我通常再次回到它。。。对不起我的英语。
如果需要,我可以发布整个代码。

最终我自己找到了答案

我没有使用ko.util.stringStartsWith(),而是使用一个简单的Javascript检查。而且它工作得很好。也许它会对某些人有用

self.filterName = ko.observable('');
            self.filterCompany = ko.observable('');
            self.filterStatus = ko.observable('');
            self.tickets = ko.computed(function () {
                return ko.utils.arrayFilter(self.ticketViewModel(), function (rec) {
                    return (
                              (
                                (self.filterName().length == 0 || (rec.Name().toLowerCase().indexOf(self.filterName().toLowerCase()) > -1)) &&
                                (self.filterCompany().length == 0 || (rec.CompanyName().toLowerCase().indexOf(self.filterCompany().toLowerCase()) > -1)) &&
                                (self.filterStatus().length == 0 || (rec.Status().toLowerCase().indexOf(self.filterStatus().toLowerCase()) > -1))
                              )
                           )
                });

            });

过滤器是一个字符串<代码>self.filter=ko.observable().toString().toLowerCase()self.filter()有什么期望call to do?你想用它实现什么?伙计,我知道它是一个字符串。在第一个例子中,它非常适合匹配整个单词。我请求帮助重新制作它,以便从单词的开头进行匹配,并展示我得到的结果。是的,也许我做得不对,这就是我请求帮助的原因,但你是怎么想的
self.filter()
可以吗?为什么要写这行-为什么要尝试对已知为字符串的对象调用函数?您试图实现什么?