从javascript中的命名值中删除元素

时间:2019-02-12 18:39:10

标签: javascript google-apps-script

我具有以下功能,当提交Google表单时会调用该功能。我正在尝试将所有答案串联到一个数组中,以后再使用:

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

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

但是我想删除答案附带的时间戳。我可以使用respostas['Timestamp']访问它,但是找不到删除或忽略它的方法。 documentation并没有太大帮助。

3 个答案:

答案 0 :(得分:3)

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添加项目实在是太过分了,您只需将其推送即可。当您遍历对象属性以确保它们是该对象的自身属性,而不是从原型继承时,也是一种好习惯。您可以详细了解here

答案 1 :(得分:1)

在将属性与其余属性连接之前,可以检查属性的名称。
如果键item等于Timestamp(不需要的属性),则跳过当前循环。

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

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

编辑:基于注释,OP证明for..in循环中的item是整数,但是,除非他/她的代码与docs根本不同,否则变量应包含字符串,而不是数字。

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

for(item in respostas) {
    console.log(item);
}

答案 2 :(得分:0)

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 Apps脚本对象中的变量,我将在此处留给以后的用户参考。返回。