Получить значения, которые соответствуют из вложенного списка в javascript

Я пытаюсь получить список из списка в Javascript.

Это список:

const cars = [
  {
    id: 1,
    brand: "Mercedes Benz",
    properties: [
    {
      property: "Mechanical",
      value: 2,
    },
    {
      property: "Chemical",
      value: 2,
    },
    {
      property: "Pressure",
      value: 3,
    }],
  },
  
  {
    id: 2,
    brand: "BMW",
    properties: [
    {
      property: "Mechanical",
      value: 5,
    },
    {
      property: "Chemical",
      value: 3,
    },
    {
      property: "Pressure",
      value: 6,
    }],
  }
]

Мне нужны автомобили, которые имеют определенное свойство со значением больше, чем X

Например, если я скажу, что это свойство Mechanical и его значение равно 3, я получу полный объект с идентификатором 2.

У кого-нибудь есть идея? Мне тяжело

Извините за плохое форматирование кода, StackOverflow по какой-то причине не позволяет публиковать его в отформатированном виде.

Совет: я вставляю его в Node REPL ;)

заранее спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
743
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте filter:

const desiredProp = "Mechanical";
const minVal = 3;

const filteredCars = cars.filter(car =>
    car.properties.some(
        prop => prop.property === desiredProp && prop.value >= minVal
    )
);

Если вы ищете только первое совпадение, а не массив всех совпадений, замените filter на find.

Вы можете создать функцию propGreaterThan, которая принимает желаемое свойство и число, которое вам нужно, чтобы оно было больше. Используя комбинацию filter в массиве cars и find в массиве properties, вы можете найти подходящие автомобили.

const cars = [
  {
    id: 1,
    brand: "Mercedes Benz",
    properties: [
    {
      property: "Mechanical",
      value: 2,
    },
    {
      property: "Chemical",
      value: 2,
    },
    {
      property: "Pressure",
      value: 3,
    }],
  },
  
  {
    id: 2,
    brand: "BMW",
    properties: [
    {
      property: "Mechanical",
      value: 5,
    },
    {
      property: "Chemical",
      value: 3,
    },
    {
      property: "Pressure",
      value: 6,
    }],
  }
]

function propGreaterThan(prop, num) {
  return cars.filter(car => {
    return car.properties.find(p => p.property === prop).value > num;
  });
}

console.info(
  propGreaterThan("Chemical", 2)
)

Другие вопросы по теме