Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вернуть массив заданного размера (https://javascript.ru/forum/misc/84145-vernut-massiv-zadannogo-razmera.html)

NovichokJS 15.06.2022 14:54

Вернуть массив заданного размера
 
Нужно чтобы число, передаваемое в функцию указывало на ее размер. Ф-ция должна вернуть массив заданной размерности, каждым элементом которого будет ф-ция, которая возвращает свой индекс в массиве.
Пример работы: 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;
}

рони 15.06.2022 15:19

Цитата:

Сообщение от NovichokJS
ф-ция, которая возвращает свой индекс в массиве.

const createArrOfFunc = length => {
            let arr = Array.from({
                length
            }, _ => function fn() {
                return arr.indexOf(fn)
            })
            return arr;
         }

        let a = createArrOfFunc(5);
        alert(a[2]());

voraa 15.06.2022 15:31

Цитата:

Сообщение от NovichokJS
вернуть массив заданной размерности

Размерность и размер массива это две большие разницы.

Vlasenko Fedor 15.06.2022 16:03

const createArrOfFunc = length => Array.from({length}, (_, v) => _ => v);

:dance:

ksa 15.06.2022 16:12

рони, мне показалось ты малость перемудрил... :)
const createArrOfFunc = length => {
	let arr = Array.from(
		{length}, 
		(val, i) => _ => i
	)
	return arr;
}

let a = createArrOfFunc(5);
alert(a[2]());

ksa 15.06.2022 16:13

Опередили... :(

рони 15.06.2022 16:41

Цитата:

Сообщение от ksa
перемудрил...

Цитата:

Сообщение от NovichokJS
ф-ция, которая возвращает свой индекс в массиве.

ой ...
const createArrOfFunc = length => {
	let arr = Array.from(
		{length},
		(val, i) => _ => i
	)
	return arr;
}

let a = createArrOfFunc(5);
a.splice(2, 1);
alert(a[2]());

ksa 15.06.2022 16:45

рони, вона ты докуда занырнул! :victory:

NovichokJS 15.06.2022 17:34

Цитата:

Сообщение от рони (Сообщение 546170)
ой ...
const createArrOfFunc = length => {
	let arr = Array.from(
		{length},
		(val, i) => _ => i
	)
	return arr;
}

let a = createArrOfFunc(5);
a.splice(2, 1);
alert(a[2]());

Ф-ция должна вернуть массив заданной размерности, каждым элементом которого будет ф-ция, которая возвращает свой индекс в массиве.
При выполнении вашего кода получается массив из анонимных функций:
[
  [Function (anonymous)],
  [Function (anonymous)],
  [Function (anonymous)],
  [Function (anonymous)]
]
3

voraa 15.06.2022 17:48

Функция может либо иметь имя, либо быть анонимной.
А какие имена должны быть у этих функций?

Так размер массива или размерность?
[0,1,2,3,4] - это массив размерности 1 (размер - 5)

[
[1,2,3],
[4,5,6],
[7,8,9]
] - это массив размерности 2


Часовой пояс GMT +3, время: 21:27.