我有一个要过滤字符串的对象数组。因此,我想检查多个属性是否包含过滤器字符串(不区分大小写)。

这是数组:

[{
  id: "01234",
  name: "My Object 01234",
  short_name: "MO01234"
}, ...]


因此,以下所有过滤器字符串应与该对象匹配:0123objmO01等。

这是我现在所拥有的:

const filterString = this.filterString.toLowerCase();
return myObjects.filter(
  entry => {
    return
      entry.id.toLowerCase().indexOf(filterString) >= 0 ||
      entry.name.toLowerCase().indexOf(filterString) >= 0 ||
      entry.short_name.toLowerCase().indexOf(filterString) >= 0;
  }
);


您能想到一种更快/更清洁的方法吗?

最佳答案

我不认为您可以更快地做到这一点,但更清洁的工作可能就是这样

const filterString = this.filterString.toLowerCase();
return myObjects.filter((entry) => {
    return Object.values(entry).some((value) => {
        return value.toLowerCase().includes(filterString)
    })
});

关于javascript - 通过多种属性过滤对象的最快方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49997189/

10-08 22:47