Javascript 递归遍历嵌套的JS对象以创建字符串

Javascript 递归遍历嵌套的JS对象以创建字符串,javascript,recursion,Javascript,Recursion,我有一个包含多个嵌套对象的对象,它也可以有对象数组。下面是一个例子: { "name": "0040", "id": "9952", "type": 1, "items": [ { "code": "AUD", "value": 604.84 }, { "code": "CAD", "value": 586.36 }, { "code": "CHF", "value":

我有一个包含多个嵌套对象的对象,它也可以有对象数组。下面是一个例子:

{
  "name": "0040",
  "id": "9952",
  "type": 1,
  "items": [
    {
      "code": "AUD",
      "value": 604.84
    },
    {
      "code": "CAD",
      "value": 586.36
    },
    {
      "code": "CHF",
      "value": 441.56
    },
    {
      "code": "EUR",
      "value": 389.87
    },
    {
      "code": "GBP",
      "value": 346.01
    },
    {
      "code": "HKD",
      "value": 345.31
    },
    {
      "code": "JPY",
      "value": 501.67
    },
    {
      "code": "NZD",
      "value": 642.29
    },
    {
      "code": "USD",
      "value": 441.50
    }
  ]
}
我必须遍历整个对象并创建一个包含属性
code
所有值的字符串。我已经编写了一个递归函数来解决这个问题,但是它使用了一个名为
code
的全局变量。如何将该方法更改为使用局部变量而不是全局变量

这是我的密码:

getAllCodes(data) {
    for (const key in data) {
      if (data.hasOwnProperty(key)) {
        if (Array.isArray(data[key])) {
          this.getAllCodes(data[key]);
        } else if (typeof data[key] === 'object') {
          if (data[key]['code']) {
            this.codes += `${data[key].code}+`;
          } else {
            this.getAllCodes(data[key]);
          }
        }
      }
    }
  }

我不认为这里需要
递归。您可以使用简单的

let obj={“name”:“0040”,“id”:“9952”,“type”:1,“items”:[{“code”:“AUD”,“value”:604.84},{“code”:“CAD”,“value”:586.36},{“code”:“CHF”,“value”:441.56},{“code”:“EUR”,“value”:389.87},{“code”:“GBP”,“value”:346.01},{“code”:“HKD”,“value”:345.31},{“code”:“code”:“JPY”,“value”:501.67},{“code”:“code”:“code”:“NZD”,“value”:“value”::642.29},{“代码”:“美元”,“价值”:441.50}]}
让codeString=obj.items.reduce((输出,{code})=>{
输出+=代码+“”
返回输出;
},'')

log(codeString)
我不认为这里需要
递归。您可以使用简单的

let obj={“name”:“0040”,“id”:“9952”,“type”:1,“items”:[{“code”:“AUD”,“value”:604.84},{“code”:“CAD”,“value”:586.36},{“code”:“CHF”,“value”:441.56},{“code”:“EUR”,“value”:389.87},{“code”:“GBP”,“value”:346.01},{“code”:“HKD”,“value”:345.31},{“code”:“code”:“JPY”,“value”:501.67},{“code”:“code”:“code”:“NZD”,“value”:“value”::642.29},{“代码”:“美元”,“价值”:441.50}]}
让codeString=obj.items.reduce((输出,{code})=>{
输出+=代码+“”
返回输出;
},'')

log(codeString)
您可以使用一个函数,该函数递归地从嵌套对象收集
code
属性

const
getCode=object=>[
…[“对象”中的“代码”?对象。代码:“”,
…Object.values(Object.filter(o=>o&&typeof o==='Object').map(getCode)
].加入(“”);
var对象={code:'a',节点:{code:'b',节点:{code:'c',节点:{code:'d'}};

log(getCode(object))
您可以使用一个函数,该函数递归地从嵌套对象收集
code
属性

const
getCode=object=>[
…[“对象”中的“代码”?对象。代码:“”,
…Object.values(Object.filter(o=>o&&typeof o==='Object').map(getCode)
].加入(“”);
var对象={code:'a',节点:{code:'b',节点:{code:'c',节点:{code:'d'}};

log(getCode(object))
您发布的数据不是真正嵌套的-一个简单的
map
就可以了。如果您发布了反映实际问题的示例数据,这会有所帮助。您发布的数据不是真正嵌套的-一个简单的
map
就可以了。如果您发布反映实际问题的示例数据,这将有所帮助。