Есть код, в нем описаны 4 типа движения вверх, вниз, влево, вправо (это 4 отдельные ф-и). Помогите написать функцию, которая будет выбирать случайную из них и вызывать её
function up() {
console.log("Moving Up...");
}
function down() {
console.log("Moving Down...");
}
function left() {
console.log("Moving Left...");
}
function right() {
console.log("Moving Right...");
}
let funcs = [up, down, left, right];
funcs[Math.random() * 4 | 0]();
2 последние строчки. Помещаем интересующие 4 функции в массив, затем обращаемся к случайному элементу массива (Math.random() * 4 | 0
означает случайное целое число от 0 до 3 включительно) и вызываем полученную функцию при помощи круглых скобок.
И да, если Вам нужна именно функция, то вот
function up() {
console.log("Moving Up...");
}
function down() {
console.log("Moving Down...");
}
function left() {
console.log("Moving Left...");
}
function right() {
console.log("Moving Right...");
}
// просто обборачиваем функцией moveSomewhere, ничего особенного
function moveSomewhere() {
return [up, down, left, right][Math.random() * 4 | 0]();
}
moveSomewhere();
В принципе, если есть желание/необходимость, можно объединить все это в одну строку (как я и поступил в примере выше).
Если у Вас всего 4 функции движения (вверх, вниз, влево и вправо), то следующий более абстрактный подход может быть и излишен, но тем не менее иногда лучше продумать все наперед. А мало ли потом еще перемещения по диагоналям добавить решите?
function up() {
console.log("Moving Up...");
}
function down() {
console.log("Moving Down...");
}
function left() {
console.log("Moving Left...");
}
function right() {
console.log("Moving Right...");
}
function invokeRandomFunc() {
return arguments[Math.random() * arguments.length | 0]();
}
invokeRandomFunc(up, down, left, right);
Передавайте randomFunc функции (без круглых скобок) в качестве аргументов.
function randomFunc(...funcs) {
// Функция генератор случайных чисел
const getRandomInt = (min, max) => {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// Генерируем случайное число из количества функций
const indexFunc = getRandomInt(0, funcs.length-1);
// Вызываем функцию
funcs[indexFunc]();
}
Пример
randomFunc(up, down, left, right);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как найти "SELECT MAX(Поле типа INT UNSIGNED) FROM" для поля типа INT UNSIGNED в MySQL? Получаю ошибку "4294967295 is not a valid value for field 'MAX(ID)'The allowed range is 0 to 2147483647"
У меня есть продакшен база данныхОстанавливать её нельзя
(!!!Есть похожая тема, но я не нашёл в ней ответы на свои вопросы, поэтому огромная просьба не помечать мой вопрос как дубликат!!!)