2017-09-05 373 views
-2

也許這是之前提出的問題,我不知道如何查找它,所以我預先申請了我完全缺乏的措辭技巧。所以,在這裏。我在ECMA5編程(所以沒有花哨的陣列/對象方法可用)。我有一個陣列,其包含鍵,可以說:從一個數組(對象)中創建一個數組(對象)的陣列(值)

var keys = ["name", "age", "school"]; 

然後,將含有值數組的數組:

var values = [["John John", 16, "Saints Hills High School"], ["Miranda Knobs", 12, "St Mary Junior High"], ["Patricia Lee", 13, "Milwakee High School"]]; 

我想創建對象的數組。中,具有從所述第一陣列與第二陣列的鍵和值的每個對象,像這樣:

var result = [{name: "John John", age: 16, school: "Saints Hills High School"}, {name: "Miranda Knobs", age: 12, school: "St Mary Junior High"}, {name: "Patricia Lee", age: 13, school: "Milwakee High School"}]; 

我看到一些問題/解決方案2點的陣列,含有所述鍵和一個值之一,但我不想法如何爲每個對象多次重複第一個數組。

+0

你到目前爲止試過了什麼? –

+0

1/2我不同意以複製品爲由,關閉此Q.既沒有提供的鏈接[循環創建在二維數組中的對象的鍵和值](https://stackoverflow.com/questions/17353505/looping-to-create-object-keys-and-values-in-javascript-from -2d數組),也沒有後續重複的鏈接[通過Javascript對複雜的JSON對象進行交互的最簡單方法](https://stackoverflow.com/questions/17192051/easiest-way-to-interate-over-a-complex -json-object-via-javascript)提供/討論'Array.prototype.reduce'方法,它比傳統循環有許多優點。 –

+0

2/2我真的很感激,如果我可以在這裏提供完全這樣的解決方案,因爲我努力回答OP的問題,在按下「提交答案」按鈕之前幾秒鐘,通過將此Q設置爲「重複」 。 –

回答

1

您可以使用此代碼:

var keys = ["name", "age", "school"]; 
 
var values = [["John John", 16, "Saints Hills High School"], ["Miranda Knobs", 12, "St Mary Junior High"], ["Patricia Lee", 13, "Milwakee High School"]]; 
 
var resultArray = []; 
 
for(var i=0; i<values.length; i++){ 
 
    var obj = {}; 
 
    for(var j=0; j<keys.length; j++){ 
 
    obj[keys[j]] = values[i][j]; 
 
    } 
 
    resultArray.push(obj); 
 
} 
 

 
console.log(resultArray);

這工作正是你想要達到的目標。

+0

這幾乎與鏈接副本中的代碼完全相同。 – George

+0

@George,但我不知道,因爲我正在創建此代碼段,並立即發佈,而無需看評論 –

+0

僅有代碼的答案沒有那麼有用。你應該解釋爲什麼OP有他們的問題(當不提供任何代碼時很難)以及你的代碼如何處理它。 – RobG