Получение индекса массива из 2 значений

Я не знал, как правильно сформулировать название.

У меня есть 2 индекса из 2D-массива (x и y), и мне нужно умножить их вместе, чтобы получить индекс для второго массива (1D), однако это не так просто, потому что, если x или y равны нулю, он вернет ноль независимо от другого значения.

Я мог бы обойти это, используя вложенные циклы, показанные ниже:

    int count = 0;

for( int i = 0; i < x; i++ )
{
    for( int j = 0; j < y; j++ )
    {
        count++;
    }
}

//count now equals desired value

... но это кажется ужасно непрактичным.

Мне это кажется чем-то невероятно простым, и я откладывал вопрос до сих пор, думая, что это может быть так.

Почему не count = x * y? Похоже, вам может понадобиться что-то вроде A[x][y] = B[y * A.length + x]

Mike 14.09.2018 02:06

Не знаю, почему я не подумал об этом. Я знал, что это было что-то простое, и моя голова не волновалась.

Anthony 14.09.2018 02:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
99
1

Ответы 1

Давайте воспользуемся следующими данными для создания примера:

var array_2d = [[0,1,2],[3,4,5]];
var array_1d = [0, 1, 2, 3, 4, 5];

Если все ваши подмассивы имеют одинаковый размер, вы можете просто умножить свой индекс i на your sub array’s length, чтобы найти соответствующую «строку» вашего одномерного массива. Затем вы можете просто добавить индекс «столбца» вашего массива.

Но это будет работать только в том случае, если вы работаете с матрицами с фиксированной шириной.

var sub_dimensional_array_length = 3;
for (var i = 0; i < array_2d.length; i++) {
    for (var j = 0; j < array_2d[i].length; j++) {
        var array_1d_index = (sub_dimensional_array_length * i) + j;
        console.info(array_2d[i][j], array_1d[array_1d_index]);
    }
}

Другие вопросы по теме