0

我有幾個陣列我想扁平化爲一個對象。任何人都可以看到一個很好的方式來映射或從這轉移數據:如何將數組平鋪或旋轉到單個對象?

Something: [ 
    {"Test":0,"Count":206,"Abc":0}, 
    {"Test":2,"Count":119,"Abc":3}, 
    {"Test":1,"Count":207,"Abc":3}, 
    {"Test":3,"Count":129,"Abc":8, 
    {"Test":4,"Count":122,"Abc":2} 
] 

to this?

{ 
    Name: "Something", 
    Test0: 206, 
    Test1: 207, 
    Test2: 119, 
    Test3: 129, 
    Test4: 122 
} 
+0

爲什麼要這樣做? –

+0

看起來像一個非常簡單的循環。沒有任何通用的東西可以自動完成。 – Barmar

回答

1
Array.prototype.flattenOn=function(out,key,value) 
{ 
    for(var i=0,l=this.length;i<l;i++) 
    { 
     out[key+''+this[i][key]]=this[i][value]; 
    } 
    return out; 
}; 

var obj={ 
    Something:[ 
    {"Test":0,"Count":206,"Abc":0}, 
    {"Test":2,"Count":119,"Abc":3}, 
    {"Test":1,"Count":207,"Abc":3}, 
    {"Test":3,"Count":129,"Abc":8}, 
    {"Test":4,"Count":122,"Abc":2} 
    ] 
}; 

var output={}; 
output.Name='Something'; 
output=obj.Something.flattenOn(output,'Test','Count'); 
alert(JSON.stringify(output)); 

下面是相同的小提琴http://jsfiddle.net/67aXK/

1
var newSomething = {}; 
newSomething.name = 'Something'; 
for (var i=0,l=Something.length;i<l;i++) { 
    newSomething['Test'+Something[i].Test] = Something[i].Count; 
} 
相關問題