我有以下json数据:
[
{
"product":{
"id_product":"1"
}
"id_productParent":""
},
{
"product":{
"id_product":"2"
},
"id_productParent":"1"
},
{
"product":{
"id_product":"3"
},
"id_productParent":"2"
},
{
"product":{
"id_product":"4"
},
"id_productParent":"3"
}
]
我需要返回一个数组,其中包含产品的所有后代,其中定义了产品的后代(伪代码),如下所示
descendant(x) = return (p=> p.id_productParent==x.product + descendant(p))
。
我怎样才能用打字稿解决这个问题?
答案 0 :(得分:0)
以下是这种情况的基线:
var g=[
{
"product":{
"id_product":"1"
},
"id_productParent":""
},
{
"product":{
"id_product":"2"
},
"id_productParent":"1"
},
{
"product":{
"id_product":"3"
},
"id_productParent":"2"
},
{
"product":{
"id_product":"4"
},
"id_productParent":"2"
}
]
function eachRecursive(id)
{
var t=g.filter(i=>i.id_productParent==id);
if (!t.length)
{
console.log(id)
return id;
}
else
t.forEach(i=>{
eachRecursive(i.product.id_product);
})
}
eachRecursive(2) //3,4
答案 1 :(得分:0)
我用以下解决方案解决了。
让products
和id
尊重产品数组和我想要找到其后代的产品ID,我会像这样过滤它:
...
this.g = this.products.filter(p => this.isDescendant(p, id));
...
isDescendant(p, id){
if(p.id_productParent == id)
return true;
if(!p.id_productParent)
return false;
return this.isDescendant(this.products.filter(p => p.product.id_product == p.id_productParent)[0], id);
}
现在this.g
我拥有id