按子字符串过滤的错误结果

Wrong result for filtering by substring

我正在创建一个过滤输入,其中根据 keyUp 带来结果。这就是我通过 Backbone 的集合进行过滤的方法:

var Brand = Backbone.Model;

var Brands = Backbone.Collection.extend({
    model: Brand,
    filterByName: function () {
        return this.filter(function (model) {
            return model.get('name').indexOf('h') > -1;
        });
    }
});

var fiat = new Brand ({ name: 'Fiat' });
var honda = new Brand ({ name: 'Honda' });
var chevrolet = new Brand ({ name: 'Chevrolet' });
var peugeot = new Brand ({ name: 'Peugeot' });
var mitsubishi = new Brand ({ name: 'Mitsubishi' });
var hyundai = new Brand ({ name: 'Hyundai' });

var brands = new Brands ([ fiat, honda, chevrolet, peugeot, mitsubishi, hyundai ]);

console.log(brands.filterByName());

Playground: http://jsfiddle.net/Lgcb0skm/

重点是:例如,当我键入 h 时,它只会给我带来 MitsubishiChevrolet,而不是所有可能的结果,比如HondaHyundai等为什么?建议?

试试这个:

return model.get('name').toLowerCase().indexOf('h') > -1;

简答'H' != 'h'。如果要进行不区分大小写的匹配,则需要将文本字符串小写:

return this.filter(function (model) {
    return model.get('name').toLowerCase().indexOf('h') > -1;
});