2017-08-28 15 views
0

我想JSON格式转换在JavaScript这样的:如何在反应JS中转换格式json?

{ 
    "a": [5,1,2], 
    "b": [4,0,3], 
    "c": [1,1,4] 
} 

[ 
    {'a':5,'b':4,'c':1}, 
    {'a':1,'b':0,'c':1}, 
    {'a':2,'b':3,'c':4} 
] 

如何解决这个问题?

+0

你可以分享你尝试过什么做呢? – marvel308

+0

请参阅[如何提出一个好问题](https://stackoverflow.com/help/how-to-ask)部分。你有什么尝试,你有代码?阅读[如何创建最小,完整和可验证示例](https://stackoverflow.com/help/mcve)。 –

回答

0

在这里你去:

const obj = { 
 
    "a": [5,1,2], 
 
    "b": [4,0,3], 
 
    "c": [1,1,4] 
 
}; 
 

 
const convert = (obj) => { 
 
    let res = []; 
 
    const keys = Object.keys(obj); 
 
    if (!keys.length) return []; 
 
    for (let i = 0; i < obj[keys[0]].length; i++) { 
 
    let nextObj = {}; 
 
    keys.forEach(key => { 
 
     nextObj[key] = obj[key][i]; 
 
    }); 
 
    res.push(nextObj); 
 
    } 
 
    return res; 
 
} 
 

 
console.log(convert(obj))

+0

没问题@ user3440030:D – Zevgon

0

您可以通过以下方式

let obj = { 
 
"a": [5,1,2], 
 
"b": [4,0,3], 
 
"c": [1,1,4] 
 
} 
 

 
let result = [], idx=0; 
 
while(true){ 
 
    let isValid = true, tempObj = {}; 
 
    for(element in obj){ 
 
     if(idx < obj[element].length){ 
 
      tempObj[element] = obj[element][idx]; 
 
     } 
 
     else{ 
 
      isValid = false; 
 
     } 
 
    } 
 
    if(isValid){ 
 
     result.push(tempObj); 
 
    } 
 
    else{ 
 
     break; 
 
    } 
 
    idx++; 
 
} 
 

 
console.log(result);