Вернуть массив заданного размера
Нужно чтобы число, передаваемое в функцию указывало на ее размер. Ф-ция должна вернуть массив заданной размерности, каждым элементом которого будет ф-ция, которая возвращает свой индекс в массиве.
Пример работы: createArrayOfFunctions(9)[5](); // 5 Помогите плиз, пытаюсь сделать, получаю пустой массив:
const createArrOfFunc = num => {
let arr = [];
if (typeof number !== 'number') { return null; }
for (let i = number; i < number; i += 1) {
function func(i) {
return i;
}
arr.push(func);
}
return arr;
}
|
Цитата:
const createArrOfFunc = length => {
let arr = Array.from({
length
}, _ => function fn() {
return arr.indexOf(fn)
})
return arr;
}
let a = createArrOfFunc(5);
alert(a[2]());
|
Цитата:
|
const createArrOfFunc = length => Array.from({length}, (_, v) => _ => v);
:dance: |
рони, мне показалось ты малость перемудрил... :)
const createArrOfFunc = length => {
let arr = Array.from(
{length},
(val, i) => _ => i
)
return arr;
}
let a = createArrOfFunc(5);
alert(a[2]());
|
Опередили... :(
|
Цитата:
Цитата:
const createArrOfFunc = length => {
let arr = Array.from(
{length},
(val, i) => _ => i
)
return arr;
}
let a = createArrOfFunc(5);
a.splice(2, 1);
alert(a[2]());
|
рони, вона ты докуда занырнул! :victory:
|
Цитата:
При выполнении вашего кода получается массив из анонимных функций: [ [Function (anonymous)], [Function (anonymous)], [Function (anonymous)], [Function (anonymous)] ] 3 |
Функция может либо иметь имя, либо быть анонимной.
А какие имена должны быть у этих функций? Так размер массива или размерность? [0,1,2,3,4] - это массив размерности 1 (размер - 5) [ [1,2,3], [4,5,6], [7,8,9] ] - это массив размерности 2 |
NovichokJS,
что-то не так? |
Цитата:
|
NovichokJS,
добавьте проверку числа в любой из предложенных выше вариантов, самостоятельно. а лучше исправьте ошибки в строках 1, 5, 6, и будет вам счастье.
const createArrOfFunc = num => {
let arr = [];
if (typeof number !== 'number') { return null; }
for (let i = number; i < number; i += 1) {
function func(i) {
return i;
}
arr.push(func);
}
return arr;
}
|
Рони, поправил:
const createArrOfFunc = number => {
let arr = [];
if (typeof number !== 'number') { return null; }
if (number != undefined) {
for (let i = 0; i < number; i += 1) {
function func(i) {
return i;
}
arr.push(func);
}
} else { return []; }
return arr;
}
но не знаю как в шестой строке поправить. Подскажите пожалуйста |
Цитата:
|
NovichokJS,
да и надо было только, исправить ошибки, а не добавлять код))) |
Цитата:
|
но единственное теперь осталось - это путой массив всё равно что-то не возвращает.
|
как тут корректно описать логику что если аргумент не передан то вернуть пустой массив
|
NovichokJS,
const createArrOfFunc = (number = 0) => {
if (typeof number !== 'number') { return null; }
let arr = [];
for (let i = 0; i < number; i += 1) {
function func() {
return i;
};
arr.push(func);
}
return arr;
}
console.log(createArrOfFunc(9)[5]());
console.log(createArrOfFunc());
console.log(createArrOfFunc('test'));
|
понял, спасибо!
|
| Часовой пояс GMT +3, время: 00:37. |