使用 NodeJS 过滤 JSON

roo*_*eih -1 javascript node.js

我有一个包含多个对象的 JSON 数组。我想返回包含特定值的对象。例如,我想返回

[
    service_wog: {
        count: 48,
        popular: false,
        code: 33,
        price: 20,
        id: 76,
        service: 'WOG',
        slug: 'wog'
      },
      service_gojoy: {
        count: 48,
        popular: false,
        code: 33,
        price: 20,
        id: 77,
        service: 'GoJoy',
        slug: 'gojoy'
          }
]
Run Code Online (Sandbox Code Playgroud)

如何在 slug 中返回包含“gojoy”的对象?

我尝试了以下方法:

let u = Object.values(a);
u.filter(i => i.slug === 'gojoy');
Run Code Online (Sandbox Code Playgroud)

它似乎不起作用......我误解了它的filter()工作原理吗?

fal*_*sky 5

不,看来您使用filter正确。但是,您使用什么作为输入:

[
  service_wog: {
      count: 48,
      popular: false,
      code: 33,
      price: 20,
      id: 76,
      service: 'WOG',
      slug: 'wog'
  },
  service_gojoy: {
      count: 48,
      popular: false,
      code: 33,
      price: 20,
      id: 77,
      service: 'GoJoy',
      slug: 'gojoy'
  }
]
Run Code Online (Sandbox Code Playgroud)

它不是一个有效的数组,而是一个对象。

因此,而不是[]-{}应使用:

{
  service_wog: {
      count: 48,
      popular: false,
      code: 33,
      price: 20,
      id: 76,
      service: 'WOG',
      slug: 'wog'
  },
  service_gojoy: {
      count: 48,
      popular: false,
      code: 33,
      price: 20,
      id: 77,
      service: 'GoJoy',
      slug: 'gojoy'
  }
}
Run Code Online (Sandbox Code Playgroud)

所以最终:

[
  service_wog: {
      count: 48,
      popular: false,
      code: 33,
      price: 20,
      id: 76,
      service: 'WOG',
      slug: 'wog'
  },
  service_gojoy: {
      count: 48,
      popular: false,
      code: 33,
      price: 20,
      id: 77,
      service: 'GoJoy',
      slug: 'gojoy'
  }
]
Run Code Online (Sandbox Code Playgroud)