Удалить элемент из именованных значений в JavaScript - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть следующая функция, которая вызывается при отправке форм Google.Я пытаюсь объединить все ответы в один массив, который будет использоваться последним:

function onFormSubmit(e) {
var respostas = e.namedValues;

for(item in respostas){
    rp = rp.concat(respostas[item]);
  }
}

Но я хотел бы отбросить временную метку, которая идет вместе с ответами.Я могу получить к нему доступ с помощью respostas['Timestamp'], но не могу найти способ отбросить или проигнорировать его.Документация не сильно помогла.

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

e.namedValues ​​ возвращает объект JSON с пользовательскими ключами.

var jsonObj = e.namesValues;

/* e.namedValues returns data like this...
{
  "test1": "testval1",
  "test2": "testval2",
  "test3": "testval3",
}
*/
for(item in respostas){
    Logger.log(item); //Key
    Logger.log(respostas[item]); //Value
}

Это должно позволить вам получить доступ к ключу или значению элементов в respostas.

Принятый ответ лучше, так как он больше помогает пользователю решить их точную проблему, однако я оставлю это здесь для будущих пользователей, если они захотят понять, как получить доступ к переменным в объекте, который GoogleСценарии приложений возвращаются.

0 голосов
/ 12 февраля 2019
var cp = [];
function onSubmitForm(e) {
    var respostas = e.namedValues;
    for (var name in respostas) {
        if (respostas.hasOwnProperty(name) {
            if (name !== 'Timestamp') {
                cp.push(respostash[name]);
            }
        }
    }
}

Это то, что я бы предложил.Использование concat для добавления элемента является излишним, вы можете просто нажать его.Также рекомендуется использовать циклический просмотр свойств объекта, чтобы убедиться, что они являются собственными свойствами этого объекта, а не наследуются от прототипа.Вы можете прочитать больше об этом здесь

0 голосов
/ 12 февраля 2019

Вы можете проверить имя свойства перед объединением его с остальными.
Если ключ item равен Timestamp (нежелательное свойство), просто пропустите текущий цикл.

for(item in respostas) {
    if (item === 'Timestamp') {
       continue;
    }

    rp = rp.concat(respostas[item]);
}

РЕДАКТИРОВАТЬ: Основываясь на комментариях, OP подтверждает, что item в цикле for..in является целым числом, но, если его / ее код радикально отличается от документа, переменная должна содержать строки, а не числа.

var respostas = {
  'First Name': ['Jane'],
  'Timestamp': ['6/7/2015 20:54:13'],
  'Last Name': ['Doe']
};

for(item in respostas) {
    console.log(item);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...