Фильтрация наличия нескольких подстрок в скрипте приложения - PullRequest
1 голос
/ 11 апреля 2019

В скрипте приложений у меня есть объект, который выглядит следующим образом:

    message_objs.push({
      'body': message.getPlainBody(),
      'date' : message.getDate(),
      'from' : message.getFrom(),
      'to' : message.getTo()

    })

, который я строю из полученных писем в папке входящих сообщений

Я хочу отфильтровать письма по доменуОтправитель, поэтому я могу сделать:

var substring = 'yahoo';

var filtered =  message_objs.filter(function (obj) {
 return obj['from'].indexOf(substring)>-1;
});

для одной подстроки, но на самом деле я хотел бы иметь массив разрешенных доменов, таких как

var substrings = ['yahoo', 'gmail' ... ];

Какой лучший способ сделать этов скрипте приложений или с помощью инструментов ES5?

Ответы [ 3 ]

1 голос
/ 11 апреля 2019

Вы можете использовать метод Javascript includes.

var substrings = ['yahoo', 'gmail' ... ];
var filtered =  message_objs.filter(function (obj) {
 return substrings.includes(obj['from']);
});
1 голос
/ 12 апреля 2019

Пожалуйста, подумайте об этом примере сценария как об одном из нескольких ответов.В этом примере я использовал some() для проверки, включены ли значения substrings в message_objs.

Пример сценария:

var message_objs = [
  {from: "sample1@sample.com"},
  {from: "sample2@yahoo.com"},
  {from: "sample3@gmail.com"},
];
var substrings = ['yahoo', 'gmail'];
var filtered =  message_objs.filter(function(obj) {
  return substrings.some(function(e) {return obj['from'].indexOf(e) > -1});
});
console.log(filtered);

Ссылка:

1 голос
/ 11 апреля 2019

Вы можете использовать Array#some, чтобы проверить наличие любого из них в строке, и String#includes, чтобы проверить наличие подстроки.

var substrings = ['yahoo', 'gmail' ]

var filtered =  message_objs.filter(function (obj) {
   return substring.some( sub => obj['from'].includes(sub) );
});

Для старых браузеров с дополнительным методом Array#filter.

var substrings = ['yahoo', 'gmail' ]

var filtered =  message_objs.filter(function (obj) {
   return substring.filter(function(sub){
     obj['from'].indexOf(sub) > -1;
   }).length;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...