загрузить функции в цикл for - имя переменной функции [переменная] - PullRequest
0 голосов
/ 11 октября 2019

Можно ли назвать функцию в виде массива [x]?

Я ищу решение для загрузки различных функций в цикле for. Я объявлю функцию, как это имя функции. А потом я буду вызывать функции в цикле foor с массивом = ["name", ...];

function functionname["aaa"]() {
console.log("is for aaa");
}

array = ["aaa", "bbb", "ccc"];

for (var i = 0; i < array.length; i++) {
functionname[array[i]]();
}

Ответы [ 5 ]

0 голосов
/ 12 октября 2019

Попробуйте это:

Сделайте это таким образом, в противном случае вам потребуется использовать такие функции, как eval или конструктор Function для разбора строк.

function commonfunction(name){
 console.log('is for '+name);
}

var array = ["aaa", "bbb", "ccc"];

array = array.map((name)=>()=>commonfunction(name));
array.forEach((_newFunction)=>_newFunction());
0 голосов
/ 11 октября 2019

как вау! Спасибо! и у меня есть собственное решение. Является ли мое решение валидным?

var functionname = [];

functionname["aaa"] = function() {
console.log("is for aaa");
}
functionname["bbb"] = function() {
console.log("is for bbb");
}
functionname["ccc"] = function() {
console.log("is for ccc");
}

var array = ["aaa", "bbb", "ccc"];

for (var i = 0; i < array.length; i++) {
functionname[array[i]];
}

РЕДАКТИРОВАТЬ: не работать с массивом. работает только с объектом.

0 голосов
/ 11 октября 2019

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

Понятия не имеюкакова ваша цель, но вот одно из возможных решений, хотя есть несколько способов приблизиться к этому:

const aaa = () => console.log('aaa');
const bbb = () => console.log('bbb');
const ccc = () => console.log('ccc');

const array = [aaa, bbb, ccc];

for (var i = 0; i < array.length; i++) {
  array[i]();
}
0 голосов
/ 11 октября 2019

Вы можете создать справочную таблицу функций.

let functionname = {
    "aaa": () => {
        console.log("is for aaa")
    },
    "bbb": () => {
        console.log("is for bbb")
    }
};

без функций стрелок:

var functionname = {
    "aaa": function aaa() {
        console.log("is for aaa");
    },
    "bbb": function bbb() {
        console.log("is for bbb");
    }
};
0 голосов
/ 11 октября 2019

Вы можете назначить функции как члены объекта:

let myObj = {
    "aaa": function () {
        console.log("is for aaa");
    },
    "bbb": function () {
        console.log("is for bbb");
    }
};

myObj["ccc"] = function () {
        console.log("is for ccc");
    };

array = ["aaa", "bbb", "ccc"];

for (var i = 0; i < array.length; i++) {
    myObj[array[i]]();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...