Я пишу сценарий AdWords, который будет использоваться в агентстве и требует от пользователей изменения переменной, которая представляет собой массив, содержащий определенные вещи, которые необходимо исключить, поэтому мне нужно создать оператор if, который исключает все эти,
Я не могу знать заранее, сколько элементов будет на самом деле в массиве, поэтому я в настоящее время создал это:
var exclusions = ["a", "b", "c"];
var exclusionInput = "if (url.indexOf('";
for (var i = 0; i < exclusions.length; i++) {
if (exclusions.length - i == 1) {
var exclusion = exclusions[i];
var exclusionString = exclusion.toString();
exclusionInput = exclusionInput + exclusionString + "') != -1) {toExclude.push(url); Logger.log(url) }";
} else {
var exclusion = exclusions[i];
var exclusionString = exclusion.toString();
exclusionInput = exclusionInput + exclusionString + "') != -1 || url.indexOf('";
}
}
Проблема в том, что это работает, только если я позже сделаюeval:
eval(exclusionInput);
(по крайней мере, насколько я вижу, это не сработает, если я просто добавлю в exclusionInput сам по себе).
Этот код до сих пор работал отлично, но в моих поисках того, как это сделать, все говорили, что я должен стараться никогда не использовать eval, если это возможно.Основное беспокойство вызывает безопасность, которая на самом деле не является проблемой, поскольку все это находится в оболочке Google Ads и будет использоваться только сотрудниками моего агентства, но я все еще задавался вопросом, есть ли лучший способ добиться этого, который неТребовать Eval.