Фильтровать JSON с помощью NodeJS

#javascript #node.js

#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'
          }
]
  

Как мне вернуть объект, содержащий ‘gojoy’ в slug?

Я попробовал следующий способ:

 let u = Object.values(a);
u.filter(i => i.slug === 'gojoy');
  

Похоже, это не работает… Я неправильно понял, как filter() это работает?

Ответ №1:

Нет, кажется, вы используете 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'
  }
]
  

это не допустимый массив, а объект.

Поэтому вместо [ and ] { and } следует использовать:

 {
  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'
  }
}
  

Итак, в конечном итоге:

 const a = {
  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'
  }
}

let u = Object.values(a);
console.log(u.filter(i => i.slug === 'gojoy'));