所以我写了这个函数把一个对象转换成一个数组。
功能:
function objectToArray(obj) {
const result = [];
for (const [key, value] of Object.entries(obj)) {
if (typeof value === 'object' && value !== null) {
result[key] = objectToArray(value);
} else {
result[key] = value;
}
}
return result;
}
我尝试转换的对象:
const obj = {
"1129931367": {
"id": 10,
"amount": 1,
"assets": {
"appid": 252490,
"app_name": "name",
"classid": 1129931367,
"icon_url": "url",
"tradable": 1,
"name": "name",
"market_name": "market name",
"market_hash_name": "market hash name",
"sell_listings": 3215,
"sell_price": "0.10",
"updated_at": "17-Dec-2022"
},
"market_tradable_restriction": 7,
"market_marketable_restriction": 7,
"tags": [
{
"category": "category",
"internal_name": "internal name",
"localized_category_name": "localized category name",
"localized_tag_name": "localized tag name"
},
{
"category": "category",
"internal_name": "internal name",
"localized_category_name": "localized category name",
"localized_tag_name": "localized tag name"
}
]
}
}
输出:
(1129931368) [empty × 1129931367, Array(0)]
但是当我试图转换我想要转换的对象时,它添加了很多空数组,我不知道为什么,这是因为对象或者我的函数有问题吗?
谢谢你的帮助:D
我已经尝试过多次重写我提供的函数,但这已经接近我想要的了。
2条答案
按热度按时间rdlzhqv91#
这是因为您没有使用
push
功能。result[key] = value;
实际上是在那个位置推到阵列。相反,您需要:
fdbelqdn2#
您可以只获取值,然后获取flatMap以获得平面结果。