По поводу твоего кода немного режет цикл for.
1. Обычно for пишут в таком стиле: for (var i = 0; i < firstRow.length; i++)
2. Минусом первого пункта является то что в каждой итерации цикла будет высчитываться длинна массива, если мы знаем, что длинна массива не будет меняться, то обычно до выполнения цикла его длинну кэшируют в переменную, типа
var firstRowLength = firstRow.length
for (var i = 0; i < firstRowLength; i++)
3. Ну и минусом for циклов является, то что приходится создвать переменные типа i, если у тебя есть несколько циклов в таком коде, можно как-то ошибиться с перменной i, поэтому лучше использовать forEach