簡體   English   中英

如何將特定的 Json 部分作為獨立對象返回?

[英]How to return specific Json part as independent object?

我有 Json 對象,如下所示:

{
  id : 0,
  cnt: 1,
  someStuff : 'lalala',
  1: {
    id : 1,
    cnt: 2,
    someStuff : 'allgood',
    1: {
      id : 2,
      cnt: 0,
      someStuff: 'nice'
    },
    2: {
      id : 3,
      cnt : 0,
      someStuff: 'nice2'
    }
  }
}

我想要做的就是將此 Json 的某些部分作為獨立對象返回。 如果我使用這個功能:

function CurrentNodeReturn(obj, idReturn) {
    if (idReturn == 0) { return obj; }
    for (var i = 1; i < obj.cnt + 1; i++) {
        if (obj[i].id == idReturn) {
            return obj[i];
        } else {
            return CurrentNodeReturn(obj[i], idReturn);
        }
    }
}

我可以獲得與 Id = 0 發送的相同對象。 此外,我可以通過 id 1 和 2 獲得分離的對象。但是當我需要獲得 id = 3 的對象時,我得到的只是控制台日志中的“未定義”錯誤。 那么,如果每次我用參數(我提到的所有主要對象,應該返回到起始調用點的節點的 id)調用 CurrentNodeReturn 函數時,我該如何改進我的函數的算法?

如果每次使用參數調用 CurrentNodeReturn 函數時,如何改進函數的算法?

首先,您應該更改停止條件以檢查 id 是否匹配或對象是否未定義。

否則,如果您不滿足停止條件,則循環遍歷子項並遞歸調用您的函數,如果不是undefined則返回該值。

 const data = { id : 0, cnt: 1, someStuff: 'lalala', 1: { id : 1, cnt: 2, someStuff: 'allgood', 1: { id : 2, cnt: 0, someStuff: 'nice' }, 2: { id : 3, cnt : 0, someStuff: 'nice2' } } }; function getObject(obj, id) { if (!obj || obj.id === id) { return obj; } for (let i = 0; i < obj.cnt; i++) { const child = getObject(obj[i + 1], id); if (child) { return child; } } } console.log(getObject(data, 2)) console.log(getObject(data, 3))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM