javascript - 根据对象值过滤嵌套的对象数组Javascript ES6

标签 javascript vue.js ecmascript-6 filter

我正在尝试根据 search 变量(字符串)过滤下面的对象数组。因此,用户可以根据头衔、年份或人名进行搜索

array = [{
    "title": "Test",
    "year": 2018,
    "people": [
      {
        "name": "person1"
      },
      {
        "name": "person2"
      }],
  },
  {
    "title": "Test2",
    "year": 2018,
    "people": [
      {
        "name": "person3"
      },
      {
        "name": "person4"
      },
      {
        "name": "person5"
      }],
   },...]

我编写了以下函数,该函数适用于titleyear,但我不知道如何搜索内部的people数组功能。我知道如何在没有 ES6 的情况下做到这一点,但我更喜欢 ES6,它仍然让我感到困惑:

filteredArray() {
            let search = this.search.toLowerCase();
            return this.array.filter(function (item) {
                    return Object.values(item).some(val =>
                        String(val).toLowerCase().includes(search));
            })
        },

this.search 是保存用户输入值的 v-model。 这是Codepen

感谢您的帮助:)

最佳答案

以下代码对您的用例有帮助

   var searchString = 'person5';

   let result = array.filter(ele => 
    ele.title.includes(searchString)
    || `${ele.year}`.includes(searchString)
    || ele.people.some(pele => pele.name.includes(searchString))
   )
   console.log(JSON.stringify(result));

关于javascript - 根据对象值过滤嵌套的对象数组Javascript ES6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015872/

相关文章:

javascript - 我可以防止默认()吗?在ajax回调中?

javascript - 地理定位 API 不起作用

javascript - 在 render() 中 react 内联逻辑

vue.js - 如何为 VueJs Props 添加多种数据类型?

javascript - 在 JavaScript 中将数据属性转换为访问器属性,反之亦然

javascript - Angular 2 : Rendering the same component with different ids

node.js - 如何解决错误 gypgyp ERR!ERR!发现 VSfind VS msvs_version 未从命令行或 npm 配置设置?

node.js - 使用 Vue.js 显示单个项目

javascript - 在 Javascript 类中使用 const

javascript - 如何在MainApplication.java中获取环境变量 react native