1 javascript arrays javascript-objects google-apps-script
我正在尝试对不支持 ES6 的谷歌表格应用程序脚本中的大量数据进行排序!(我认为)
数组看起来像这样 var data = [["Frank", "franck@gmail.com", 21],["Mark", "Mark@gmail.com", 23]]
我很喜欢将数组转换为对象的想法,在那里我可以通过名称 ex 访问每个对象:
Frank.name
Frank.email
Frank.age
Run Code Online (Sandbox Code Playgroud)
我尝试了以下
function Driver(name, email, age) {
this.name= name;
this.email= email;
this.age = age;
}
Run Code Online (Sandbox Code Playgroud)
进而
for(var i=0; i<data.length; i++){
data[i][0]= new Driver (data[i][0],data[i][1],data[i][2])
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用你能帮我解决这个问题吗?
如果我理解你的要求
我很想把数组变成对象,在那里我可以通过名称访问每个对象
正确,那么解决方案就这么简单:
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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
警告:
如果您必须name
在data
阵列中使用相同的 Divers,那么您将丢失其中之一。
归档时间: |
|
查看次数: |
88 次 |
最近记录: |