我有一个像这样的对象数组
let input = [
{
"metadata": { "id": 1071, "name": "USA" },
"accesories": [ { "name": "steel" } ]
},
{
"metadata": { "id": 1068, "name": "China" },
"accesories": [ { "name": "electronics" } ]
},
]
Desired output: ["USA", "China"]
为了获得上述结果,我使用以下
input.map((el) => el?.metadata?.name);
但是,如果我想首先按
electronics
进行过滤,并根据哪个对象具有名称为 electronics
的配件,我该如何实现该结果。
例如
output: ["USA"] //if i want to filter by object which has name steel
output: ["China"] //if i want to filter by object which has name electronics
can someone let me know how can i use filter with above map method
您可以通过首先根据所需配件名称的存在来过滤数组,然后映射过滤后的数组以提取名称,如下所示
let input = [
{
"metadata": { "id": 1071, "name": "USA" },
"accesories": [ { "name": "steel" } ]
},
{
"metadata": { "id": 1068, "name": "China" },
"accesories": [ { "name": "electronics" } ]
},
];
const filterParameter = "electronics";
const filteredObjects = input.filter(el => el?.accesories.some(acc => acc?.name === filterParameter));
const result = filteredObjects.map(el => el?.metadata?.name);
console.log(result);