Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2022, 14:54
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

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

Последний раз редактировалось NovichokJS, 15.06.2022 в 15:16.
Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2022, 15:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от NovichokJS
ф-ция, которая возвращает свой индекс в массиве.
const createArrOfFunc = length => {
            let arr = Array.from({
                length
            }, _ => function fn() {
                return arr.indexOf(fn)
            })
            return arr;
         }

        let a = createArrOfFunc(5);
        alert(a[2]());
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2022, 15:31
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от NovichokJS
вернуть массив заданной размерности
Размерность и размер массива это две большие разницы.
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2022, 16:03
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

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

Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2022, 16:12
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

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

let a = createArrOfFunc(5);
alert(a[2]());
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2022, 16:13
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Опередили...
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2022, 16:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от 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]());
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2022, 16:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

рони, вона ты докуда занырнул!
Ответить с цитированием
  #9 (permalink)  
Старый 15.06.2022, 17:34
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
ой ...
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
Ответить с цитированием
  #10 (permalink)  
Старый 15.06.2022, 17:48
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

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

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

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

Последний раз редактировалось voraa, 15.06.2022 в 17:52.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести запрос в асинхронный и вернуть массив oleg901 AJAX и COMET 3 11.02.2019 21:38
Функция реализует промис, вернуть массив строк из него JakyL Javascript под браузер 0 11.10.2017 00:06
Как можно методом ajax вернуть ассоциативный массив js? Hurray AJAX и COMET 2 09.01.2016 00:19
Удалить и вернуть массив из удаленных элементов splice Paulyyy Общие вопросы Javascript 15 29.05.2013 15:36
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30