Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2025, 12:36
Аватар для REAB
Новичок на форуме
Отправить личное сообщение для REAB Посмотреть профиль Найти все сообщения от REAB
 
Регистрация: 14.10.2023
Сообщений: 4

2-х мерный массив из объектов
Здравствуйте!

Пытаюсь сделать сабж, но код вообще зависает)
Или есть другой способ сделать 2-х мерный массив из Object'ов?

function CreateMatrix2D(Width, Height) 
{
    var MX = [];
 	
    while (Height--) 
	{
		var A = new Array();

		for (var x = 0; x < Width; ++x) 
		{
			var ID   = new Object();
			ID.Value = 0;
		
			A.push(ID);
		}

        MX.push(A);
    }
	
    return MX;
}
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2025, 16:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,131

Сообщение от REAB
но код вообще зависает
вы что-то не договариваете ...
Сообщение от REAB
Или есть другой способ
function CreateMatrix2D(Width, Height) {
            return new Array(Height).fill(new Array(Width).fill({
                Value: 0
            }))
        }
        console.log(CreateMatrix2D(2, 3))
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2025, 13:44
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,753

рони, Так нельзя
new Array(Width).fill({Value: 0 })

Вот что получится
Один раз создастся объект {Value: 0 } и все элементы массива заполнятся ссылками на него, на единственный объект.
Надо
Array.from({length:Width}, () => {Value:0})

function CreateMatrix2D(Width, Height) {
	return  Array.from({length:Height},
			() => Array.from ({length: Width}, 
				() => {Value: 0}
			)
		)
}
console.log(CreateMatrix2D(2, 3))
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2025, 15:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,131

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

Сообщение от REAB
но код вообще зависает
Вот так работает...

alert(JSON.stringify(CreateMatrix2D(2, 3), null, 3))
//
function CreateMatrix2D(Width, Height){
    var MX = [];
	for (var i = 0; i < Height; ++i) {
		var A = [];
		for (var j = 0; j < Width; ++j) {
			A.push({Value: 0});
		}
        MX.push(A);
    }
    return MX;
}
Ответить с цитированием
  #6 (permalink)  
Старый 14.01.2025, 05:14
Аватар для REAB
Новичок на форуме
Отправить личное сообщение для REAB Посмотреть профиль Найти все сообщения от REAB
 
Регистрация: 14.10.2023
Сообщений: 4

Благодарю
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать массив объектов в массив массивов sovsem-nub Events/DOM/Window 4 12.05.2018 21:56
Массив объектов Tanya51 Общие вопросы Javascript 8 16.07.2017 14:41
Массив объектов JobLack Общие вопросы Javascript 3 08.06.2017 16:14
Массив объектов doox911 Библиотеки/Тулкиты/Фреймворки 6 16.01.2014 22:36
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10