我拥有的,
{
"rowId": "1",
"product_name": [
"Product 1",
"Product 2",
"Product 3",
"Product 4",
"Product 5"
],
"product_tag": [
"1112231",
"1112232",
"1112233",
"1112234",
"1112235"
],
"version_id": [
"1.0",
"2.0",
"1.5",
"3.0",
"2.5"
]
}
我希望如何对其进行转换。(即从上面给出的 JSON 中的每个数组中取出每个元素并形成一个如下所示的新数组)。
{
[
"Product 1",
"1112231",
"1.0"
],
[
"Product 2",
"1112232",
"2.0"
],
[
"Product 3",
"1112233",
"1.5"
],
[
"Product 4",
"1112234",
"3.0"
],
[
"Product 5",
"1112235",
"2.5"
]
}
我尝试过的,
我尝试过使用 javascript 的 flatMap
函数(如下所示),但没有成功。 (注:这里testData指的是上面粘贴的JSON数据)
[testData.product_name, testData.product_tag, testData.version_id].flatMap((i, index) => i[index]);
它只返回一条这样的记录(在我的例子中我需要得到 5 条记录),
["Product 1","1112232","1.5"]
有人可以帮忙吗?
最佳答案
您可以使用Array.from
像这样:
const input={"rowId":"1","product_name":["Product 1","Product 2","Product 3","Product 4","Product 5"],"product_tag":["1112231","1112232","1112233","1112234","1112235"],"version_id":["1.0","2.0","1.5","3.0","2.5"]}
const { product_name, product_tag, version_id } = input;
const output =
Array.from(input.product_name, (name, i) => ([ name, product_tag[i], version_id[i] ]))
console.log(output)
如果每个数组中的项目数量不相等,您可以获取最大数组的长度来创建输出
// or Math.min if you don't want undefined items
const length = Math.max(product_name.length, product_tag.length, version_id.length)
const output =
Array.from({ length }, (_, i) => ([ product_name[i] , product_tag[i], version_id[i] ]))
关于javascript - 解析 JSON 并形成自定义数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147009/