我有JSON数据,其结构如下:
const SubSpecs= [
{
"_id": "1",
"nom": "installation",
"blocks": [
{
"idBlock": "1",
"ArtisanOffres": [
{
"idArtisan": "1",
"price": 12
}
]
},
{
"idBlock": "2",
"ArtisanOffres": [
{
"idArtisan": "1",
"price": 14
}
]
}
]
},
{
"_id": "2",
"nom": "tech",
"blocks": [
{
"idBlock": "1",
"ArtisanOffres": [
{
"idArtisan": "1",
"price": 12
}
]
},
{
"idBlock": "2",
"ArtisanOffres": [
{
"idArtisan": "1",
"price": 14
},
{
"idArtisan": "2",
"price": 50
}
]
}
]
}
],
}
这是我想通过ID筛选的工匠数组:
artisans= [
{
"_id": "1",
"username": "test1"
},
{
"_id": "2",
"username": "test2"
}
]
现在我想提取所有的价格,有相同的id的工匠(提取的id),并按此id分组!!
我只是开始了一个简单的功能,但我没有找到完成它的方法!! 有人能帮忙吗?!
我不明白如何过滤这些数据? 下面的代码不工作,我不能够找到任何这样的过滤的例子。
这就是我的功能:
const total = data
.map((fb) =>
fb.blocks
.map((b) =>
b.ArtisanOffres.map((ao)=> ao.price)
.join(",")
.includes("1")
)
.join(",")
)
.join(",")
.split(",");
我是javascript新手,我面临这个算法问题,
你好,你觉得这个解决方案怎么样? 我通过idArtisan===“1”过滤了您的数据,然后将所有价格相加。 结果是52。 这里的工作示例:
null
const SubSpecs= [
{
"_id": "1",
"nom": "installation",
"blocks": [
{
"idBlock": "1",
"ArtisanOffres": [
{
"idArtisan": "1",
"price": 12
}
]
},
{
"idBlock": "2",
"ArtisanOffres": [
{
"idArtisan": "1",
"price": 14
}
]
}
]
},
{
"_id": "2",
"nom": "tech",
"blocks": [
{
"idBlock": "1",
"ArtisanOffres": [
{
"idArtisan": "1",
"price": 12
}
]
},
{
"idBlock": "2",
"ArtisanOffres": [
{
"idArtisan": "1",
"price": 14
},
{
"idArtisan": "2",
"price": 50
}
]
}
]
}
];
let result = SubSpecs.map(sub => {
return sub.blocks.map(block => {
return block.ArtisanOffres.filter(artisan => artisan.idArtisan === "1");
});
});
let array = result.flat(2);
console.log(array.reduce(function(_this, val) {
return _this + val.price
}, 0));