从 javascript 中的嵌套列表中获取匹配的值

Obtain values that match from a nested list in 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 我将获得id 为 2

的完整对象

有人有想法吗?难为我了

很抱歉代码格式不正确,Whosebug 出于某种原因不允许 post 对其进行格式化。

提示:我将其粘贴到节点 REPL 上 ;)

提前致谢

使用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 函数,它接受所需的 属性 和您需要它更大的数字。使用 cars 数组上的 filterproperties 数组上的 find 的组合,您可以找到合适的汽车。

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.log(
  propGreaterThan("Chemical", 2)
)