С помощью скрипта приложений Google, выпускающего движок V8 с поддержкой ES6, я прошел курс ES6. Что касается деконструкции, я подумал о следующем сценарии, который я использую в своем текущем коде довольно часто.
function oldStyle() {
var ss = SpreadsheetApp.getActiveSheet()
var data = ss.getDataRange().getValues()
var headers = data.shift() //[id, first_name, last_name, email, gender]
data.forEach(function (row){
console.log(row[headers.indexOf('first_name')]+" "+row[headers.indexOf('last_name')])
})
}
Использование этого позволяет столбцам быть в любом порядке в электронной таблице, перемещено et c и код все еще будет работать (очевидно, что они не могут быть переименованы, что является недостатком).
Проходя страницу обучения по деконструкции массива, я сразу подумал, что могу использовать переменную headers в качестве левой части деконструкции так что я мог действительно быстро ссылаться на столбцы с минимальным кодом.
function es6() {
const ss = SpreadsheetApp.getActiveSheet()
const data = ss.getDataRange().getValues()
const headers = data.shift() //[id, first_name, last_name, email, gender]
data.forEach(function (row){
// Use the headers variable as the left side of destructuring instead of the working line 20
// let headers = row or
// let [headers] = row
// the idea being it's really quick to merge/reference based on column headings
let [ ,first_name, last_name] = row //instead of having to type the column position in the array
console.log(`${first_name} ${last_name}`)
})
}
Протестировав это, я понимаю, почему закомментированный код не работает. Мой вопрос, следовательно, есть ли способ заставить его работать? Или более эффективный способ делать то, что я делаю с row[headers.indexOf('first_name')]