2016-08-12 7 views
-2

개체의 json 배열을 만들려고합니다.개체의 json 배열 서식 지정

내 배열은

var array=[{a:1,b:2,id:apple},{a:5,b:10,id:banana}] 

나는 그것이 배열 형식이되도록 출력 할 수 있습니다 :

[{source:apple, target:a ,value:1},{source:apple, target:b ,value:2},{source:banana, target:a ,value:5},{source:banana, target:b ,value:10}] 

도움말 감사!

+1

당신은 무엇을하려고 했습니까? – baao

답변

0

를 사용하여 간단합니다.

var array=[{a:1,b:2,id:'apple'},{a:5,b:10,id:'banana'}]; 
 

 
var result = array.reduce(function(r, e) { 
 
    Object.keys(e).forEach(function(k) { 
 
    if(k != 'id') r.push({source: e.id, target:k ,value:e[k]}) 
 
    }) 
 
    return r; 
 
}, []); 
 

 
console.log(result)

+0

고맙습니다. 답변이 맞습니다. 하지만 하나의 개체에 500 개의 키 값 쌍이 있으면 작동하지 않습니다. –

+0

속성 수에 관계없이 작동해야합니다. https://jsfiddle.net/Lg0wyt9u/1116/ –

+0

나는 fiddle https://jsfiddle.net/Lg0wyt9u/1118/을 업데이트했습니다. –

0

그것은 단지 당신이 결과를 얻을 수 reduce()Object.keys()을 사용할 수 있습니다 JSON.stringify(array)

0

네이티브 (테스트되지 않은) 솔루션은 다음과 같습니다

function myFormat(objects){ 
 
    var formated = []; 
 
    for(var i = 0; i < objects.length; i++){ 
 
    if(!objects[i].hasOwnProperty('id'))continue; 
 

 
    var fObj = []; 
 
    for(var key in objects[i]){ 
 
     if(key == 'id')continue; 
 

 
     formated.push({ 
 
     source: objects[i].id, 
 
     target: key, 
 
     value: objects[i][key] 
 
     }); 
 
    } 
 
    } 
 
    return formated; 
 
} 
 

 
var array=[{a:1,b:2,id:'apple'},{a:5,b:10,id:'banana'}]; 
 
console.log(myFormat(array));