Как получить индексы определенных элементов массива в скрипте Apps - PullRequest
0 голосов
/ 09 марта 2019

С помощью скрипта приложений у меня есть:

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 ]

2 голосов
/ 09 марта 2019

Вы можете использовать уменьшить и продолжать нажимать индексы, где вы найдете R:

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

var replies = conversations.reduce(function(op,message,index) {
    if(message.indexOf('R:')!== -1) {
      op.push(index)
    }
    return op
},[]);  

console.log(replies)
2 голосов
/ 09 марта 2019

Две вещи:

  1. Вы не можете сделать это с помощью map.
  2. Ваш return находится не в том месте, что является причиной синтаксической ошибки.

Чтобы сделать это за один проход, самое простое - использовать forEach и push (поскольку скрипт Apps не поддерживает for-of):

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

но вы можете сделать это в два прохода с map и filter:

var replies = conversation
    .map(function(message, index) {
        return message.indexOf("R:") !== -1 ? index : -1;
    })
    .filter(function(index) {
        return index !== -1;
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...