Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析JSON并形成自定义数组_Javascript_Html_Json - Fatal编程技术网

Javascript 解析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",

我所拥有的

我多么希望它得到改变。i、 e,从上面给出的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"]

有人能帮忙吗?

您可以减少值/数组,并将项目分配给具有相同索引的数组

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

}