2016-11-23 80 views
2

我的一個節點JS庫是將一些數據,我需要在錯誤的格式是這樣的:JS/ES6:對象數組轉換

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

(注意,值並不重要) 但我需要以某種方式循環這個數組,我發現我的B對於具有特定值的A(在這種情況下,例如'2',我需要'4'),並且我的程序的所有其他部分到目前爲止使用數組像這樣:

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

,這將是我的首選方法。

另請注意,a中的數據量總是與b和c相同,但本身是可變的。

那麼在ES6/JS(在我開始搞亂for循環之前)完成這個「最好」的方法是什麼?

+0

「*將是「最好」的方式*「......如果這個問題阻礙了你的進展,那麼我會強烈建議你閱讀:http:/ /www.joelonsoftware.com/articles/fog0000000018.html –

+2

使用此處顯示的數組的示例有一個錯誤,值得注意的是「* Uncaught SyntaxError:Unexpected token,*」。你打算成爲一個陣列嗎?我覺得這是你問題的一個關鍵部分。 –

+1

其實for-loops會是一個不錯的主意。 – Bergi

回答

2

如果您正在尋找變換對象像

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

進入一個陣列狀

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

像這樣的東西是最簡單的方法我能想到的

function formatData (data) { 
    return Object.keys(data).reduce((arr, key) => { 
    data[key].forEach((value, i) => { 
    const iObj = arr[i] || (arr[i] = {}); 
    iObj[key] = value; 
    }); 
    return arr; 
    }, []); 
} 
+0

你有問題有'{[「a」:「1」,「b」:「3」,「c」:「5」],[「a」:「2」,「b」:「4」 ,「c」:「6」]}'我假設你打算成爲'[{「a」:「1」,「b」:「3」,「c」:「5」},{「 a「:」2「,」b「:」4「,」c「:」6「}]',因爲第一個是無效的js。 –

+0

是的,你是對的。我現在會更新這個。對於快速響應也非常感謝,這完美地工作。 – ThexBasic

+0

不會'in for'和'for(let i = 0; i Bergi