从 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
数组上的 filter
和 properties
数组上的 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)
)
我正在尝试从 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
数组上的 filter
和 properties
数组上的 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)
)