javascript - 在多个条件下过滤 javascript 数组

标签 javascript arrays filter ecmascript-6 lodash

我有一个过滤数组的输入框,只显示那些匹配项。

let songs = [
   {name: 'Let It Be', artist: 'The Beatles},
   {name: 'Lady Madonna', artist: 'The Beatles },
   {name: 'Mama Mia', artist: 'The Beatles}
];

在下面的示例中,它将仅按名称进行匹配。

let value = 'name';
let q = 'Let it be' // value entered in input box;

let songFilter = songs.filter(function(song) {
   return song[value].toString().toLowerCase().indexOf(q) != -1; // returns true or false
});

然后,当我在输入框中输入 Let It Be 时,它将只显示返回 'Let It Be'。但是,我想按两首歌曲进行过滤,所以如果我输入 Let It Be, Lady Madonna,我希望它返回两首歌曲。

我采用了很多方法,但无法弄清楚如何让它发挥作用。如果这样更容易解决,我也可以使用 lodash

最佳答案

let songFilter = songs.filter(function(song) {
    ['let it be', 'lady madonna'].indexOf(song[value].toString().toLowerCase()) > -1
});

关于javascript - 在多个条件下过滤 javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43204972/

相关文章:

javascript - 如何使用 "qualifier"触发Backbone事件

javascript - 无需刷新页面即可显示本地存储变量

java - 有什么办法可以修复这个数组越界异常吗?

python - 是否可以将 Django 的 SafeExceptionReporterFilter 与 AdminEmailHandler 以外的其他东西一起使用?

javascript - 打开 Bootstrap 模式弹出窗口时防止加载其他类

javascript - 如何检索 DOM 元素的显示属性?

c - 尝试在 C 中交换二维数组的元素

java - 在 arrayList 中搜索对象,然后多次向同一对象添加值

java - 使用正则表达式进行名称过滤器 - Java

java - 使用 Pig Latin(或一般的 java)的 FILTER 正则表达式