在 javascript 中使用多个条件进行过滤
filtering with multiple conditions in javascript
我正在尝试根据输入过滤数据,它工作正常,但我想为其添加一个额外的条件。如果给出标题或其他值(例如 sendFrom),它应该 return。
const newData = masterDataSource.filter(function (item) {
const itemData = item.titel ? item.titel.toUpperCase() : ''.toUpperCase();
const textData = text.toUpperCase();
return itemData.indexOf(textData) > -1;
});
我尝试添加一些运算符,但没有按计划进行
const newData = masterDataSource.filter(function (item) {
const itemData = item.titel || item.sendFrom ? item.titel.toUpperCase() || item.sendFrom.toUpperCase() : ''.toUpperCase();
const textData = text.toUpperCase();
return itemData.indexOf(textData) > -1;
});
谢谢
您可以将需要的属性收集到一个数组中,并在检查值时迭代它们。
const newData = masterDataSource.filter(({ titel = '', sendFrom = '' }) =>
[titel, sendFrom].some(s => s.toUpperCase().includes(text.toUpperCase()))
);
如果我明白你想要什么,你会想要这样的东西:
const itemData = item.titel ? item.titel.toUpperCase() : (item.sendFrom ? item.sendFrom.toUpperCase() : ''.toUpperCase());
括号不是必需的,但我添加它们是为了更容易理解逻辑。
另外,''.toUpperCase()
也没什么意义,和''
一样。
您可以将初始条件替换为
const itemData = (item.titel && item.titel.toUpperCase()) || '';
及修订版:
const itemData = (item.titel && item.titel.toUpperCase()) || (item.sendFrom && item.sendFrom.toUpperCase()) || '';
同样,不需要括号。
我正在尝试根据输入过滤数据,它工作正常,但我想为其添加一个额外的条件。如果给出标题或其他值(例如 sendFrom),它应该 return。
const newData = masterDataSource.filter(function (item) {
const itemData = item.titel ? item.titel.toUpperCase() : ''.toUpperCase();
const textData = text.toUpperCase();
return itemData.indexOf(textData) > -1;
});
我尝试添加一些运算符,但没有按计划进行
const newData = masterDataSource.filter(function (item) {
const itemData = item.titel || item.sendFrom ? item.titel.toUpperCase() || item.sendFrom.toUpperCase() : ''.toUpperCase();
const textData = text.toUpperCase();
return itemData.indexOf(textData) > -1;
});
谢谢
您可以将需要的属性收集到一个数组中,并在检查值时迭代它们。
const newData = masterDataSource.filter(({ titel = '', sendFrom = '' }) =>
[titel, sendFrom].some(s => s.toUpperCase().includes(text.toUpperCase()))
);
如果我明白你想要什么,你会想要这样的东西:
const itemData = item.titel ? item.titel.toUpperCase() : (item.sendFrom ? item.sendFrom.toUpperCase() : ''.toUpperCase());
括号不是必需的,但我添加它们是为了更容易理解逻辑。
另外,''.toUpperCase()
也没什么意义,和''
一样。
您可以将初始条件替换为
const itemData = (item.titel && item.titel.toUpperCase()) || '';
及修订版:
const itemData = (item.titel && item.titel.toUpperCase()) || (item.sendFrom && item.sendFrom.toUpperCase()) || '';
同样,不需要括号。