JavaScript 过滤数组

别处撸来的代码,过滤数组然后放到表格里面很好使,可以用于搜索。

但是现在问题来了,这个filter 根据关键字过滤出来形成新的数组。

如果要改造成,排除式的过滤呢? 比如不含 关键词1,同时也不含,关键词2, 关键词3

我能想到的是只能是反复使用这种filter,有没有什么比较简洁地filter 的用法,排除多个关键词的?
谢谢!

tables: function() {
                return this.tableData.filter(data => {
                    return Object.keys(data).some(key => {
                        return String(data[key]).toLowerCase().indexOf("测试") > -1
                    })
                })
阅读 1.8k
1 个回答

定义好要过滤的值,按照原先方法取反不就好了吗


const filterWord = ['b', 'c'];
const tableData = [
  { name: 'a', age: 15, showAge: false },
  { name: 'b', age: 16, showAge: true },
  { name: 'c', age: 12, showAge: false },
  { name: 'b1', age: 16, showAge: true },
  { name: 'd', age: 16, showAge: true },
  { name: 'e', age: 16, showAge: true },
];

const result = tableData.filter(data => {
  return !Object.keys(data).some(k => {
    const v = `${data[k]}`.toLowerCase();
    return filterWord.some(word => v.includes(word));
  });
});

console.log(result);
/**
[
  {
    "name": "a",
    "age": 15,
    "showAge": false
  },
  {
    "name": "d",
    "age": 16,
    "showAge": true
  },
  {
    "name": "e",
    "age": 16,
    "showAge": true
  }
]
*/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题