TypeScript:在嵌套的Json结构中查找和更新元素

时间:2018-08-20 21:21:37

标签: json typescript

我有一个嵌套的json结构,我想根据id查找一个元素,以便我可以访问和更改其数量:

[
  {
    'title': "title 12"
    'id' : 12
    'level' : 1
    'quantity' : 3
        'childrens': [
                {
                'title': "title 121"
                'id' : 121
                'quantity' : 5
                'level' : 2 
                'childrens':[
                    {
                        'title': "title 1211"
                        'id' : 1211
                        'quantity' : 8
                        'level' : 3
                        ...

假设我要更新ID 1211的数量,并给出12而不是8。 要手动访问ID 1211,我可以这样做

this.booksArray.find(x => x.childrens[0].childrens[0].id == 1211).children[0].children[0].quantity= 12

但是如何自动执行呢?这意味着,如果我的ID为3级,则将孩子的2级向下看,如果我的ID为4级,将孩子的3级向下看,依此类推。

1 个答案:

答案 0 :(得分:0)

您可以创建一个简单的递归函数:

function setValue(item: any, id: string, quantity: number){
  if (item.id === id) {
    item.quantity = quantity;
  } 
  else if (item.children) {
    item.children.forEach(child => setValue(child, id, quantity));
  }
}

这应该可以帮助您。