setValues
ожидает прямоугольный 2D-массив - массив, элементы которого сами являются массивами значений, которые должны быть установлены, и имеют одинаковую длину.Ваш код здесь не показывает, что такое listApplied
, но использование split
подразумевает, что это строка значений, разделенных запятыми.
Следовательно, arrayApplied
является String[]
(Array
, чьи элементы String
с).Метод Array#splice
с 2 аргументами возвращает новый Array
с измененным содержимым.который будет другим String[]
с длиной 2. Например:
var a = 'Hello,There,Friend';
var aArr = a.split(','); // ['Hello', 'There', 'Friend']
var b = aArr.splice(0, 2); // b = ['Hello', 'There'] & aArr = ['Friend']
Если мы исчерпаем aArr
путем сращивания в некоторый целевой массив, мы получим
var c = [
['Hello', 'There'],
['Friend']
];
Это действительно двумерный массив, но он не прямоугольный - один из элементов имеет длину 1, а остальные имеют длину 2.
В этом случае плохой элемент может быть только последним.В общем, возможно, есть какая-то другая операция, которая определяет элементы строки (вместо .splice(0, 2)
), поэтому можно определить плохой элемент (и дополнить его, если необходимо) следующим образом:
function fixer_(input) {
const maxLen = input.reduce(function (curMax, row) { return Math.max(curMax, row.length); }, 0);
input.forEach(function (row, index) {
if (row.length < maxLen) {
console.log('Row index ' + index + ' was too short. Padding it with ""');
row.push('');
}
});
}