2016-12-29 55 views
-1
const lessons = [ 
    [ 'Chemistry', '9AM', 'Mr. Darnick' ], 
    [ 'Physics', '10:15AM', 'Mrs. Lithun'], 
    [ 'Math', '11:30AM', 'Mrs. Vitalis' ] 
]; 

let lessonsAsObject = {}; 

lessons.map(lesson => { 
    lessonsAsObject[lesson[subject]] = lesson[0]; 
}); 

欲這個陣列轉換成一個對象,與鍵,主題,時間和教師數據進行匹配。映射陣列到對象,密鑰不限定

然而上面的代碼返回

參考誤差, 「受試者沒有定義」。

+0

你期望'subject'指?你沒有在任何地方指定它。 –

回答

0

您可以使用array destructuring從數組中獲取參數,然後使用shorthand and computed property names爲每個參數創建一個對象。

如果你想最終的結果是一個對象,而不是對象的數組,你可以將它們結合使用spread syntaxObject#assign一個對象,並且:

您可以使用主題爲重點

const lessons = [["Chemistry","9AM","Mr. Darnick"],["Physics","10:15AM","Mrs. Lithun"],["Math","11:30AM","Mrs. Vitalis"]]; 
 

 
const lessonsAsObject = Object.assign(...lessons.map(([subject, time, teacher])=> ({ 
 
    [subject]: { 
 
    time, 
 
    teacher 
 
    } 
 
}))); 
 

 
console.log(lessonsAsObject);

或者索引關鍵:

const lessons = [["Chemistry","9AM","Mr. Darnick"],["Physics","10:15AM","Mrs. Lithun"],["Math","11:30AM","Mrs. Vitalis"]]; 
 

 
const lessonsAsObject = Object.assign(...lessons.map(([subject, time, teacher], index)=> ({ 
 
    [index]: { 
 
    subject, 
 
    time, 
 
    teacher 
 
    } 
 
}))); 
 

 
console.log(lessonsAsObject);

如果你只想對象的數組:

const lessons = [["Chemistry","9AM","Mr. Darnick"],["Physics","10:15AM","Mrs. Lithun"],["Math","11:30AM","Mrs. Vitalis"]]; 
 

 
const lessonsAsObject = lessons.map(([subject, time, teacher])=> ({ subject, time, teacher })); 
 

 
console.log(lessonsAsObject);

0

如果你想與落得什麼是對象的數組,其中的對象已命名的屬性,而不是你的陣列的位置,那麼你可以這樣做:

var lessonsList = lessons.map(function(lesson) { 
    return {subject: lesson[0], time: lesson[1], teacher: lesson[2]}; 
}); 

這將使你對象數組是這樣的:

[{subject: "Chemistry", time: "9AM", teacher: "Mr. Darnick"}, 
{subject: "Physics", time: "10:15AM", teacher: "Mrs. Lithun"}, 
{subject: "Math", time: "11:30AM", teacher: "Mrs. Vitalis"}] 

如果你正在尋找一些不同類型的輸出,那麼請出示你想達成什麼輸出的例子。

但是,上面的代碼返回參考錯誤,「主體不是 定義」。

這是因爲標識符subject沒有在任何地方定義。如果您打算將其用作靜態屬性名稱,那麼您可以執行lesson["subject"]。如果您打算讓subject成爲其中包含某個屬性名稱的變量,那麼您必須定義並分配該變量。