gpt4 book ai didi

javascript - 递归遍历嵌套的JS对象创建字符串

转载 作者:行者123 更新时间:2023-12-01 01:21:21 25 4
gpt4 key购买 nike

我有一个对象,其中包含多个嵌套对象,它也可以有对象数组。这是一个例子:

{
"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 的所有值的字符串。我编写了一个递归函数来解决这个问题,但它使用了一个名为 codes 的全局变量。如何更改该方法以使用局部变量而不是全局变量。

这是我的代码:

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]);
}
}
}
}
}

最佳答案

您可以采用一个函数,从嵌套对象中递归地收集 code 属性。

const 
getCode = object => [
...['code' in object ? object.code : ''],
...Object.values(object).filter(o => o && typeof o === 'object').map(getCode)
].join(' ');

var object = { code: 'a', nodes: { code: 'b', nodes: { code: 'c', nodes: { code: 'd' } } } };

console.log(getCode(object));

关于javascript - 递归遍历嵌套的JS对象创建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54203730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com