Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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_Arrays_Json_Object_Browser - Fatal编程技术网

Javascript 将JSON对象格式化为对象数组

Javascript 将JSON对象格式化为对象数组,javascript,arrays,json,object,browser,Javascript,Arrays,Json,Object,Browser,我想转换下面的JSON格式 let init = { test1: [1, 2, 3, 4, 5], test2: [6, 7, 8, 9, 10] } 使用数组或对象的javascript本机方法转换为此格式(所有浏览器都支持) 我试过for循环,下面是代码 let keys = Object.keys(init); let result = []; for(let i = 0; i < keys.length; i++){ let key = keys[i]; f

我想转换下面的JSON格式

let init = {
  test1: [1, 2, 3, 4, 5],
  test2: [6, 7, 8, 9, 10]
}
使用数组或对象的javascript本机方法转换为此格式(所有浏览器都支持)

我试过for循环,下面是代码

let keys = Object.keys(init);
let result = [];
for(let i = 0; i < keys.length; i++){
   let key = keys[i];
   for(let j = 0; j < init[key].length; j++){
      if(i === 0){
        let obj1 = {};
        obj1[key] = init[key][j];
        result.push(obj1);
    }else{
        let obj2 = result[j];
        obj2[key] = init[key][j];
    }    
  }
}
let keys=Object.keys(init);
让结果=[];
for(设i=0;i
你可以用它来做

迭代
test1
数组元素,并使用
test1
test2
属性及其各自的值将新对象推送到数组累加器

let init={
测试1:[1,2,3,4,5],
测试2:[6,7,8,9,10]
};
让keys=Object.keys(init);
设key1=keys[0];
设key2=keys[1];
让result=init[key1]。reduce((acc,curr,i)=>{
加速推({
[键1]:当前,
[key2]:init[key2][i]
});
返回acc;
}, []);

控制台日志(结果)您可以使用for…in和Array.forEach的组合,只需几行代码即可实现此结果。如果你不想支持所有的浏览器,你可以更好地使用var而不是let

var init={
测试1:[1,2,3,4,5],
测试2:[6,7,8,9,10]
}
var结果=[]
for(初始化中的变量键){
init[key].forEach(函数(项,索引){
结果[索引]?结果[索引][键]=项:结果[索引]={[键]:项}
})
}

console.log(result)
您能添加到目前为止尝试过的内容吗?谢谢Nick,我只使用了for循环,但我想用javascript本机方法来实现这一点,我想不出任何方法this@ggorlen我已经用for循环发布了我的尝试。由于我目前不熟悉使用JS原生方法,所以我使用了for循环。为了更清楚地理解分组逻辑,我已经更改了Test2属性值,如果您认为任何答复都回答了您的问题,那么考虑将其标记为对未来读者有益。更多信息:。感谢您的回答。虽然如果我在init object中有两个以上的属性,比如test1到testn具有相同长度的数组,那么我认为在reduce函数中我们需要添加for loopThat's right@narendersaran-a
for
循环来迭代对象键。
let keys = Object.keys(init);
let result = [];
for(let i = 0; i < keys.length; i++){
   let key = keys[i];
   for(let j = 0; j < init[key].length; j++){
      if(i === 0){
        let obj1 = {};
        obj1[key] = init[key][j];
        result.push(obj1);
    }else{
        let obj2 = result[j];
        obj2[key] = init[key][j];
    }    
  }
}