以递归方式返回嵌套json中的值的列表

时间:2019-09-12 20:58:57

标签: javascript json recursion

我想递归地返回一个列表,该列表具有从嵌套json中提取的值。现在,我得到嵌套列表的结果是因为我在新堆栈中创建了新列表,并将列表返回到先前的堆栈,该列表又追加到了堆栈中的列表中。有没有一种方法可以创建一个平面列表而无需在函数外部声明列表变量。我一直很难看到递归函数。  结果:['eb_sample_1','def73544-63a1-4d2a-bfdf-1f334b1a49be','0E556',[ 2, 3 ]]

json = {
    "meta": {
        "name": "sample_1",
        "id": "def73544-63a1-4d2a",
        "code": "0E5",
        "version":{"major":2, "minor":3}
    }
}

function traverseJson(a) {
  if (typeof a != 'object') {
    return a
  } else {
    var keys = Object.keys(a)
    var l1 = []
    for (var k in keys) {
      var key = keys[k]
      var y = traverseJson(a[key])
      l1.push(y)
    }
    return (l1)
  }
}

0 个答案:

没有答案