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
就可以了。如果您发布反映实际问题的示例数据,这将有所帮助。