Javascript 解析JSON并形成自定义数组
我所拥有的 我多么希望它得到改变。i、 e,从上面给出的JSON中的每个数组中提取每个元素,并形成一个如下所示的新数组Javascript 解析JSON并形成自定义数组,javascript,html,json,Javascript,Html,Json,我所拥有的 我多么希望它得到改变。i、 e,从上面给出的JSON中的每个数组中提取每个元素,并形成一个如下所示的新数组 { [ "Product 1", "1112231", "1.0" ], [ "Product 2", "1112232", "2.0" ], [ "Product 3", "1112233",
{
[
"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"]
有人能帮忙吗?您可以减少值/数组,并将项目分配给具有相同索引的数组 var对象={rowId:1,产品名称:[产品1,产品2,产品3,产品4,产品5],产品标签:[1112231,1112232,1112233,1112234,1112235],版本id:[1.0,2.0,1.5,3.0,2.5], 结果=Object.valuesobject.reducer,a=>{ Array.isArraya&&a.forEachv,i=>r[i]=r[i]||【】.pushv; 返回r; }, []; console.logresult;
.作为控制台包装器{max height:100%!important;top:0;}您可以使用构造一个数组,其中包括产品名称、产品标签和版本id,按您喜欢的顺序排列。这是为了确保顺序正确。使用reduce在阵列中循环。使用forEach在内部数组中循环 let data={rowId:1,产品名称:[产品1,产品2,产品3,产品4,产品5],产品标签:[11122311112232111223311122341112235],版本id:[1.0,2.0,1.5,3.0,2.5]} let result=[data.product\u name,data.product\u标记,data.version\u id].reducec,v=>{ v、 额痛,i=>{ c[i]=c[i]| |[]; c[i].普什; }; 返回c; }, []; console.logresult 您可以这样使用: 常量输入={rowId:1,产品名称:[产品1,产品2,产品3,产品4,产品5],产品标签:[11122311112232111223311122341112235],版本id:[1.0,2.0,1.5,3.0,2.5]} const{product_name,product_tag,version_id}=input; 常量输出= Array.frominput.product\u name,name,i=>[name,product\u tag[i],version\u id[i]]
console.logoutput如果需要,您可以使用这样做
const ar= {
"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"
]
};
let newAr = {};
for(var i = 0;i < ar.product_name.length;i++){
newAr[i]= [ar.product_name[i],ar.product_tag[i],ar.version_id[i]];
}
请添加一个有效的结果。没有属性名的对象中不能有数组。@NinaScholz我同意,但这就是我从后端获取数据的方式。不幸的是,没有办法更改它。@Rajesh我同意Rajesh,请参考前面的回答。Nina询问的是输出,而不是输入。输入是fine@KunalMukherjee我希望,我将使用相同长度的数组。为您的解决方案添加一些解释这将只复制到input.product_name.length项,如果它是unequal@KunalMukherjee这由OP决定。OP的问题似乎并没有表明这一点。并且,我们对question@Adiga令人惊叹的我反复尝试使用平面图,这张看起来更优雅。
let arr = obj.product_name.map((it,index)=>[it,obj.product_tag[index],obj.version_id[index]])
const ar= {
"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"
]
};
let newAr = {};
for(var i = 0;i < ar.product_name.length;i++){
newAr[i]= [ar.product_name[i],ar.product_tag[i],ar.version_id[i]];
}