繁体   English   中英

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

[英]Good way to search array for string and return those objects

因此,我一直在使用此来宾列表前端应用程序完成工作。 我想做的最后一件事是允许传递字符串以按名称过滤列表。 因此,通过订阅用户在字段中输入一些名称,我应该能够使用此ko计算函数以这种不同方式搜索数组。 请记住,self.guests是访客对象的数组。

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方法: http : //www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html

您可以使用Array :: filter

var guestlist = [ 'Foo Bar', 'Doo Bar', 'Foo Doo', ... ];

function guestFilter(element) {
    return element.indexOf('Bar') > 0;
}

guestlist.filter(guestFilter); // [ 'Foo Bar', 'Doo Bar' ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM