Как сопоставить объект из транспонированного/инвертированного диапазона, который может выполнять поиск ключ-значение в GAS?

Я пишу пользовательский сценарий function(), который должен отображать определенное значение пары "ключ-значение" из диапазона с именем ioRange, состоящего из ячеек "A1:B3", показанных ниже.

// google sheets ui

/*
            [A]            [B]       
 [1]   ||    ID       ||    1      ||
 [2]   ||    NAME     ||    Elon   ||
 [3]   ||    EMOJI    ||    ????     ||
*/

Из того, что я собрал до сих пор, такая структура таблицы ключ-значение не подходит для чистой обработки листов Google. Например, с приведенными выше ячейками скрипты Google создают псевдо ассоциативный массив в виде диапазона , но отформатировано скобками строк google scripts и другими нюансами, такими как кавычки:

var ioRange = ss.getRange("A1:B3").getValues()

console.log(ioRange)
// => "[[ID, 1], [NAME, Elon], [EMOJI, ????]]"

В настоящее время я застрял на преобразовании ioRange в объект сопоставления ключ-значение с именем ioObject, имея проблемы с push() - добавлением новых значений в ioObject в правильном формате. Ниже приведен мой плохой код, но, надеюсь, он дает представление о том, чего я пытаюсь достичь.

// ???? bad code

var ioObject = {}
for (row = 0; row < ioRange.length; ++row) {
    ioObject.push(`${ioRange[row][0]}: "${ioRange[row][1]} as"`)
}

Я хочу, чтобы ioObject приводило к этому результату:

// ???? desired output

console.log(JSON.stringify(ioObject))
/* => '{
            "ID": "1", 
            "NAME": "Elon",   
            "EMOJI": "????"
        }'
*/

Чтобы я мог выполнять поиск ключ-значение следующим образом:

// ???? success!

console.log(ioObject["NAME"])
// => "Elon"

Я проверил javascript - Создание массива хэшей в скрипте Google Apps - Qaru > и Хеш-таблицы в Javascript, но безуспешно.




РЕШЕНИЕ:

// ✅ solved w/ escaping double quotes
var ioObject = {}
for (row = 0; row < ioRange.length; ++row) {
    ioObject[ioRange[io][0]]=ioRange[io][1]
}
console.log(JSON.stringify(ioObject))
// => '{"ID"="1", "NAME"="Elon", "EMOJI"="????"}'

// ???? success!
console.log(ioObject["NAME"])
// => "Elon"

person TickTickTK    schedule 24.01.2019    source источник
comment
[[ID, 1], [NAME, Elon], [EMOJI, ????]] – это двухмерный массив Google script, состоящий из двух столбцов и трех строк.   -  person Cooper    schedule 24.01.2019
comment
Попробуйте это: for(var row=0; row<ioRange.length;++row) { ioObject[ioRange[row][0]]=ioRange[row][1]); }   -  person Cooper    schedule 24.01.2019
comment
@Cooper Когда я снова прочитаю этот вопрос, потому что я заметил, что мой ответ не подходит для этого, я хотел бы удалить свой ответ. И я думаю, что ваш комментарий подходит для этого вопроса. Итак, вы можете опубликовать это как ответ? Это будет полезно для решения проблемы OP.   -  person Tanaike    schedule 24.01.2019
comment
@Cooper Я попробовал ioObject[ioRange[row][0]]=ioRange[row][1]), что дало мне 90% результата, спасибо за это. Единственная оставшаяся проблема — цитирование… не могли бы вы помочь мне получить ключ и значения в двойных кавычках? В настоящее время результатом ioObject является: // => "{ID=1, NAME=Elon, Emoji=????}" .   -  person TickTickTK    schedule 25.01.2019
comment
Для ясности вывод кавычек ioObject должен иметь результат: // => “{‘ID’=1, ‘NAME’=‘Elon’, ‘Emoji’=‘????’}". ... или что-то похожее на это. Я попытался добавить их в виде строк с помощью методов «+» concat(), но он продолжает его ломать. Очень ценю помощь @Tanaike и @Cooper :)   -  person TickTickTK    schedule 25.01.2019
comment
^ быстрое примечание, в конце ответа @Cooper было дополнительное ) , которое я случайно вставил обратно в свой первый ответ.   -  person TickTickTK    schedule 25.01.2019
comment
Вы пробовали убежать от них?   -  person Cooper    schedule 25.01.2019
comment
Да, я не так хорошо редактирую на мобильном устройстве, как на своем ноутбуке. Извини за это.   -  person Cooper    schedule 25.01.2019
comment
@Cooper Хорошая мысль, но по какой-то причине ioObject[ioRange[io][0]]=ioRange[io][1] теперь отлично работает для меня ... ✅ обнаружение объектов js работает ... ✅ правильные двойные кавычки и ✅ поиск по ключу: значение работает отлично. Еще раз спасибо за помощь, это был мой первый вопрос о переполнении стека, опубликованный после того, как он скрывался в течение большей части десятилетия. Пожалуйста, не стесняйтесь опубликовать ответ @Cooper, я также отредактирую вопрос с расширенным решением для справки. ~~ привет! ????   -  person TickTickTK    schedule 25.01.2019