Диапазон как аргументы
// Task 2
// Написать функцию makeRandomFn которая принимает диапазон чисел и возвращяет функцию, // которая при вызове возвращяет случайное число c этого диапазона. // Task 3 // Нужно расширить функцию makeRandomFn, таким образом // чтобы можно было передавать диапазон не только через масив, а как аргументы через запятую makeRandomFn(1, 2, 100, 34, 45, 556, 33) makeRandomFn([1, 2, 100, 34, 45, 556, 33]) Я сделал таск2. Но с третим возникли сложности. Вот второй. function makeRandomFn(getRandomNumber) { return function() { return getRandomNumber[Math.floor(Math.random() *getRandomNumber.length)]; } } const getRandomNumber = makeRandomFn([1, 2, 100, 34, 45, 556, 33]) console.log(getRandomNumber()); console.log(getRandomNumber()); console.log(getRandomNumber()); Вроде как не сложное задание. Но уже так плавит что ужс. Буду благодарен за литературу, или код... |
Еще дали совет что функцию которую возвращаю можно сделать стрелочной, но это для меня космос
|
DarkPhoenix,
const makeRandomFn = (...a) => (a = [].concat(...a), () => a[Math.random() * a.length|0]); const getRandomNumber = makeRandomFn([1, 2, 100, 34, 45, 556, 33]) console.log(getRandomNumber()); console.log(getRandomNumber()); console.log(getRandomNumber()); const makeRandomFn = (...a) => (a = [].concat(...a), () => a[Math.random() * a.length|0]); const getRandomNumber = makeRandomFn(1, 2, 100, 34, 45, 556, 33) console.log(getRandomNumber()); console.log(getRandomNumber()); console.log(getRandomNumber()); const makeRandomFn = function() { const a = [].concat.apply([],arguments); return function() { return a[Math.random() * a.length|0] }}; const getRandomNumber = makeRandomFn(1, 2, 100, 34, 45, 556, 33) console.log(getRandomNumber()); console.log(getRandomNumber()); console.log(getRandomNumber()); const makeRandomFn = function() { const a = [].concat.apply([],arguments); return function() { return a[Math.random() * a.length|0] }}; const getRandomNumber = makeRandomFn([1, 2, 100, 34, 45, 556, 33]) console.log(getRandomNumber()); console.log(getRandomNumber()); console.log(getRandomNumber()); |
Не совсем понимаю что за "а"? Это типа ...args? И куда в моем случае подставить
const makeRandomFn = (...a) => (a = [].concat(...a), () => a[Math.random() * a.length|0]); Ибо выдает undefined. |
function makeRandomFn(getRandomNumber) {
return function(){ const makeRandomFn = (...args) => (args = [].concat(...args), () => args[Math.random() * args.length|0]); } } const getRandomNumber = makeRandomFn([1, 2, 100, 34, 45, 556, 33]); console.log(getRandomNumber()); console.log(getRandomNumber()); console.log(getRandomNumber()); Результат выдает undefined. Или я уже упаян? |
DarkPhoenix,
смотрите пост #3 снова |
makeRandomFn = (...nums) => () => nums[Math.floor(Math.random()*nums.length)];
console.log(makeRandomFn(1,2,3)()) |
Stownheidg,
аргументом может быть и массив |
makeRandomFn = (...nums) => () => (nums = nums.flat())[Math.floor(Math.random()*nums.length)];
console.log(makeRandomFn(1,2,3)()); console.log(makeRandomFn([1,2,3])()); |
Часовой пояс GMT +3, время: 01:42. |