Есть ли способ исключить строку, если она начинается с некоторых значений? - PullRequest
1 голос
/ 15 мая 2019

Есть ли способ проверить, начинается ли любое значение с какого-либо значения в массиве?

var value = "background-color";
var value2 = "--my-variable";

var excludeItems = ["--", "-", "_"];

if (does value starts with excludeItems) {
    // then exclude
}

Ответы [ 2 ]

2 голосов
/ 15 мая 2019

Наряду с ответом CertainPerformance вы можете также иметь личный лайнер, например, [value1, value2].filter(val => excludeItems.some(str => val.startsWith(str)))

var value1 = "background-color";
var value2 = "--my-variable";

var excludeItems = ["--", "-", "_"];

const excluded = [value1, value2].filter(val => excludeItems.some(str => val.startsWith(str)));

const included = [value1, value2].filter(val => !excludeItems.some(str => val.startsWith(str)));

console.log(excluded);
console.log(included);
2 голосов
/ 15 мая 2019

Проверьте, прошел ли .some элементы в массиве тест startsWith на строку:

var value1 = "background-color";
var value2 = "--my-variable";

var excludeItems = ["--", "-", "_"];

const v1excluded = excludeItems.some(str => value1.startsWith(str));
const v2excluded = excludeItems.some(str => value2.startsWith(str));

console.log(v1excluded, v2excluded);

В этом конкретном случае, поскольку строка, начинающаяся с --, также обязательно начинается с -, вы можете опустить -- из excludeItems массив целиком, если вы хотите.

Если excludeItems является статическим, и у вас есть много символов для тестирования, вы можете сделать это более кратко с помощью регулярного выражения и набора символов:

var value1 = "background-color";
var value2 = "--my-variable";

const excludeItems = /^[-_!@#$%]/;

const v1excluded = excludeItems.test(value1);
const v2excluded = excludeItems.test(value2);

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