我试图在Vuejs 2中构建一个应用程序,其中有一个过滤器来从元素数组中找出特定的数据。此筛选器是case sensitive,但我希望有case insensitive,下面是我的代码:

tableFilter: function () {
    if( this.model ) {
        return this.model.filter(
            item =>
                item.clients_association.includes( this.search_by_name ) &&
                item.event_type.includes( this.search_by_event_type )
            )
            .map(
                d => (
                    {
                        id: d.id,
                        client_names: d.clients_association,
                        stellar_participants: d.stellar_participants,
                        contact_participants: d.contacts_association,
                    }
                )
            );
    }
}

请指导我如何实现它。

最佳答案

由于Array#includescase sensitive您可以将所有内容转换为小写:

const searchTerm = this.search_by_name.toLowerCase();
const searchEvent = this.search_by_event_type.toLowerCase();

this.model.filter((item) =>
  item.clients_association.toLowerCase().includes(searchTerm) &&
  item.event_type.toLowerCase().includes(searchEvent)
);

您还可以使用String#test,它接受带有不敏感(i)标志的正则表达式,如果字符串与表达式匹配,则返回true,否则返回false
const searchTerm = new RegExp(this.search_by_name, 'i');
const searchEvent = new RegExp(this.search_by_event_type, 'i');

this.model.filter((item) =>
  searchTerm.test(item.clients_association) &&
  searchEvent.test(item.event_type)
);

09-27 04:29