Javascript 在数组中搜索字符串并返回这些对象的好方法

Javascript 在数组中搜索字符串并返回这些对象的好方法,javascript,arrays,knockout.js,Javascript,Arrays,Knockout.js,所以我已经完成了我一直在开发的这个来宾列表前端应用程序。我最不想做的事情是允许传递一个字符串来按名称筛选列表。因此,通过订阅用户在字段中输入一些名称,我应该能够使用这个函数以不同的方式搜索数组。请记住,self.guests是一个guest对象数组 self.displayResults = ko.computed(function(){ if(self.displayTypeOf() == 'slice'){ var ary = self.guests.slice(se

所以我已经完成了我一直在开发的这个来宾列表前端应用程序。我最不想做的事情是允许传递一个字符串来按名称筛选列表。因此,通过订阅用户在字段中输入一些名称,我应该能够使用这个函数以不同的方式搜索数组。请记住,self.guests是一个guest对象数组

self.displayResults = ko.computed(function(){
    if(self.displayTypeOf() == 'slice'){
        var ary = self.guests.slice(self.startValue(),self.endValue());
        console.log(ary)
        return ary
    }else if(self.displayTypeOf() == 'string'){
        //Code I need goes here
    }
});
您可以看到,通常情况下,列表是使用列表的切片部分计算的,当用户开始在输入中键入内容时,我将使用我要求的搜索数组函数覆盖并更新此计算列表

提前谢谢

你可以用


我建议使用
ko.utils.arrayFilter
实用函数进行过滤:

self.displayResults = ko.computed(function(){
    if(self.displayTypeOf() == 'slice'){
        var ary = self.guests.slice(self.startValue(),self.endValue());
        console.log(ary)
        return ary
    }else if(self.displayTypeOf() == 'string'){
        // Init filter
        var filter = self.SomeValue();
        var ary = ko.utils.arrayFilter(self.guests(), function(item) {
           return ko.utils.stringStartsWith(item.name().toLowerCase(), filter);
        });
        console.log(ary);
        return ary;
    }
});

阅读更多关于ko-utils方法的信息:

Artem的答案可能是您想要的,但为了清楚起见,由于Guest是一个对象数组,Guest对象看起来像什么/字符串将与什么对象变量进行比较?谢谢,先生,虽然幸运的是,我能够立即发现stringStartsWith不包含在min CDN中。我必须从源头上复制它。
self.displayResults = ko.computed(function(){
    if(self.displayTypeOf() == 'slice'){
        var ary = self.guests.slice(self.startValue(),self.endValue());
        console.log(ary)
        return ary
    }else if(self.displayTypeOf() == 'string'){
        // Init filter
        var filter = self.SomeValue();
        var ary = ko.utils.arrayFilter(self.guests(), function(item) {
           return ko.utils.stringStartsWith(item.name().toLowerCase(), filter);
        });
        console.log(ary);
        return ary;
    }
});