谁能告诉我解决这个js算法?我正在到达嵌套物件物件以检查与我的变量相同的类别值,如果为 true,则回传这些物件与值匹配。不确定我是否使用了正确的方法,但也不确定如何回传整个物件。
物件
const data = [
{
"id": 799,
"name": "Ship Your Idea",
"slug": "ship-your-idea-22",
"permalink": "https://example.com/product/ship-your-idea-22/",
"categories": [
{
"id": 9,
"name": "Clothing",
"slug": "clothing"
}
]
},
{
"id": 794,
"name": "Premium Quality",
"slug": "premium-quality-19",
"permalink": "https://example.com/product/premium-quality-19/",
"categories": [
{
"id": 14,
"name": "T-shirts",
"slug": "t-shirts"
}
]
},
{
"id": 795,
"name": "Premium Quality2",
"slug": "premium-quality-193",
"permalink": "https://example.com/product/premium-quality-193/",
"categories": [
{
"id": 15,
"name": "Clothing",
"slug": "clothing"
}
]
}
]
我的职能
const brand = 'clothing';
function fliterProductByCategorly(obj, brand){
// 1.loop through each objects object
// 2.loop through object and get categorie
// 3.categorie filter get slug
// 4.check if slug value are same value as global slug, if do only return object that match the brand value.
return Object.entries(obj).filter(([, {categories}]) => Object.entries(categories).filter(([, {slug}]) => slug == brand ))
}
console.log(fliterProductByCategorly(data, brand))
示例:https ://stackblitz.com/edit/js-pizeq4
uj5u.com热心网友回复:
假设类别阵列只有 1 个元素
const data = [
{
"id": 799,
"name": "Ship Your Idea",
"slug": "ship-your-idea-22",
"permalink": "https://example.com/product/ship-your-idea-22/",
"categories": [
{
"id": 9,
"name": "Clothing",
"slug": "clothing"
}
]
},
{
"id": 794,
"name": "Premium Quality",
"slug": "premium-quality-19",
"permalink": "https://example.com/product/premium-quality-19/",
"categories": [
{
"id": 14,
"name": "T-shirts",
"slug": "t-shirts"
}
]
},
{
"id": 795,
"name": "Premium Quality2",
"slug": "premium-quality-193",
"permalink": "https://example.com/product/premium-quality-193/",
"categories": [
{
"id": 15,
"name": "Clothing",
"slug": "clothing"
}
]
}
]
const brand = 'clothing';
function fliterProductByCategorly(obj, brand){
return obj.filter(e => e.categories[0].slug===brand)
}
console.log(fliterProductByCategorly(data, brand))
.as-console-wrapper { max-height: 100% !important; top: 0; }
如果类别包含超过 1 个元素,则可能使用 reduce 实作。
const data = [
{
"id": 799,
"name": "Ship Your Idea",
"slug": "ship-your-idea-22",
"permalink": "https://example.com/product/ship-your-idea-22/",
"categories": [
{
"id": 9,
"name": "Clothing",
"slug": "clothing"
}
]
},
{
"id": 794,
"name": "Premium Quality",
"slug": "premium-quality-19",
"permalink": "https://example.com/product/premium-quality-19/",
"categories": [
{
"id": 14,
"name": "T-shirts",
"slug": "t-shirts"
}
]
},
{
"id": 795,
"name": "Premium Quality2",
"slug": "premium-quality-193",
"permalink": "https://example.com/product/premium-quality-193/",
"categories": [
{
"id": 16,
"name": "T-shirts",
"slug": "t-shirts"
},
{
"id": 15,
"name": "Clothing",
"slug": "clothing"
}
]
}
]
const brand = 'clothing';
function fliterProductByCategorly(obj, brand){
return obj.reduce((acc,curr) => {
if (curr.categories.filter(e => e.slug===brand).length>0){
acc.push(curr)
}
return acc;
},[])
}
console.log(fliterProductByCategorly(data, brand))
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 评论