簡體   English   中英

在javascript中將數組轉換為對象

[英]Turn array into objects in javascript

我正在嘗試對不支持 ES6 的谷歌表格應用程序腳本中的大量數據進行排序! (我認為)

數組看起來像這樣 var data = [["Frank", "franck@gmail.com", 21],["Mark", "Mark@gmail.com", 23]]

我很喜歡將數組轉換為對象的想法,在那里我可以通過名稱 ex 訪問每個對象:

Frank.name
Frank.email
Frank.age

我嘗試了以下

function Driver(name, email, age) {
    this.name= name;
    this.email= email;
    this.age = age;
  }

進而

for(var i=0; i<data.length; i++){
  data[i][0]= new Driver (data[i][0],data[i][1],data[i][2])
}

但它不起作用你能幫我解決這個問題嗎?

如果我理解你的要求

我很想把數組變成對象,在那里我可以通過名稱訪問每個對象

正確,那么解決方案就這么簡單:

ES6 版本

 function Driver(name, email, age) { this.name= name; this.email= email; this.age = age; } const data = [["Frank","franksmail",2], ["name2", "mail2", 3], ["name3", "mail3", 4]] const mappedData = data //map the array of arrays to an array of Drivers .map(props => new Driver(...props)) //reduce the array of drivers to a single object .reduce((accumulator, currentDriver) => { accumulator[currentDriver.name] = currentDriver return accumulator }, {}) console.log(mappedData) console.log(mappedData.Frank.email)

ES5 版本:

 function Driver(name, email, age) { this.name= name; this.email= email; this.age = age; } var data = [["Frank","franksmail",2], ["name2", "mail2", 3], ["name3", "mail3", 4]] var mappedData = data //map the array of arrays to an array of Drivers .map(function (props) { return new Driver(props[0], props[1], props[2]) }) //reduce the array of drivers to a single object .reduce(function (accumulator, currentDriver) { accumulator[currentDriver.name] = currentDriver return accumulator }, {}) console.log(mappedData) console.log(mappedData.Frank.email)

警告:
如果您必須在data數組中使用相同name Divers,那么您將丟失其中之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM