Если я понимаю ваше требование
Мне бы очень понравилась идея превратить массив в объекты, где я могу получить доступ к каждому объекту с именем
, тогда Решение так просто, как это:
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)
Предупреждение:
Если вам нужно Divers с одинаковым name
в вашем массиве data
, то вы потеряете один из их.