如何将嵌套JSON数组转换为扁平化数组?
解决方案:将嵌套JSON转换为按产品分组的数组
修改思路
无需对properties做嵌套遍历,针对每个产品,先构建包含订单ID、创建时间、产品名称的基础数组,再将该产品所有属性的value值依次追加到数组末尾,确保每个产品对应一行数据。
修改后的代码
var response = UrlFetchApp.fetch(url, options); var dataAll = JSON.parse(response.getContentText()); var dataSet = dataAll.data; var rows = []; dataSet.forEach((order) => { order.products.forEach((product) => { // 提取当前产品的所有属性值 const propertyValues = product.properties.map(prop => prop.value); // 合并基础信息与属性值,推入结果数组 rows.push([order.id, order.created_at, product.name, ...propertyValues]); }); }); console.log(rows);
代码说明
- 用
map遍历产品的properties,仅提取每个属性的value,得到纯值数组(如['blue', '1'])。 - 通过扩展运算符
...将属性值数组展开,合并到基础信息数组中,形成完整的一行数据。 - 每个产品仅执行一次
push操作,保证一行对应一个产品。
最终输出结果
[ 659, '2023-01-13T06:35:08.000000Z', '532', 'blue', '1' ], [ 658, '2023-01-12T21:36:06.000000Z', '532', 'khaki', '2' ], [ 656, '2023-01-11T17:19:42.000000Z', '2245/442', 'gray', 'fleece', '2' ], [ 655, '2023-01-10T21:56:51.000000Z', '298/426-2', 'blue', 'footer', '4' ], [ 655, '2023-01-10T21:56:51.000000Z', '257/426', 'mint', 'footer', '4' ]
内容的提问来源于stack exchange,提问作者Олег Дрогуль
相关产品推荐
相关产品推荐

