我有一個物件陣列,其中物件有陣列,我的問題是根據嵌套陣列中的值過濾物件。
const skus = [{
id: 1,
features: ["Slim"],
fields: [{
label: "Material",
value: "Material1"
}, ]
},
{
id: 2,
features: ["Cotton"],
fields: [{
label: "Material",
value: "Material2"
}, ]
},
{
id: 3,
features: ["Slim"],
fields: [{
label: "Material",
value: "Material3"
}, ]
}
];
輸出應該是基于特征陣列的陣列,例如:
const result = [{
id: 2,
features: ["Cotton"],
fields: [{
label: "Material",
value: "Material2"
},
{
label: "Type",
value: "Type2"
}
]
}]
我嘗試使用過濾器方法,但它僅適用于物件,但不適用于嵌套在物件中的陣列
uj5u.com熱心網友回復:
為了更好地理解,您必須了解 Array 也是僅在 javascript 中的特殊物件,因此您也可以對物件或嵌套物件執行過濾器。
skus.filter((item,keys)=>{
return item['features'].includes("Cotton") // Pass the search term in includes
})
有了這個,你就可以實作你的目標。讓我知道這是否適合您。
uj5u.com熱心網友回復:
我得到了與您給出的示例相同的輸出:
skus.filter(sku => sku.features.includes("Cotton"));
我希望你能多解釋一點。
uj5u.com熱心網友回復:
Filter 方法允許您深入研究物件屬性并執行比較。
const skus = [
{ id: 1, features: ["Slim"], fields: [{ label: "Material", value: "Material1" },] },
{ id: 2, features: ["Cotton"], fields: [{ label: "Material", value: "Material2" },] },
{ id: 3, features: ["Slim"], fields: [{ label: "Material", value: "Material3" },] }
];
let featureName = "Cotton"
let results = skus.filter(s => s.features.includes(featureName))
console.log(results);
我不確定 "{ label: "Type", value: "Type2" }" 在你的結果中突然來自哪里?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/454358.html
標籤:javascript 数组 目的
上一篇:使用陣列的一些鍵格式化物件
下一篇:在多維陣列中計算陣列中的字串元素
