如何在Apps脚本中获取特定数组元素的索引

时间:2019-03-09 18:25:18

标签: javascript google-apps-script

使用我拥有的应用脚本:

var conversation = [R: test1 ,  R: test3 ,  tx ,  I sent ]

我想获取包含'R:'的元素的索引列表,所以我尝试了

var replies = conversation.map(function(message) { 
    message.indexOf('R:')!== -1 && return conversation.indexOf(message);

});  

但是现在我无法保存函数,并且出现语法错误。我在做什么错了?

2 个答案:

答案 0 :(得分:2)

两件事:

  1. 您不能仅靠map来做到这一点。
  2. 您的return放在错误的位置,这是语法错误的原因。

要一次性完成,最简单的方法是使用forEachpush(因为Apps脚本不支持for-of):

var replies = [];
conversation.forEach(function(message, index) {
    if (message.indexOf("R:") !== -1) {
        replies.push(index);
    }
});

但是您可以使用mapfilter分两次通过:

var replies = conversation
    .map(function(message, index) {
        return message.indexOf("R:") !== -1 ? index : -1;
    })
    .filter(function(index) {
        return index !== -1;
    });

答案 1 :(得分:2)

您可以在发现care='a'的地方使用reduce并保持推送索引

{'m:2, 'f':1}