result.push(second[parseInt(i)/2]);
Это не определено, если у вас есть нечетное число, потому что second.length
меньше, чем половина barcodes
. Так что если barcodes.length == 11
, то второе нажатие нажимает second[5]
, когда second.length == 5
. Этого не существует, так как индексы начинаются с 0
barcodes = ["1001", "9003", "3001", "9005", "3002", "9006", "3003", "9007", "9001", "9008", "9002"];
barcodes.sort();
var first = barcodes.slice(0, (barcodes.length + 1) / 2);
var second = barcodes.slice(((barcodes.length + 1) / 2), barcodes.length);
var result = [];
for (var i = 0; i < barcodes.length; i++) {
if (i % 2 === 0) {
result.push(first[i / 2]);
if(second[(i / 2)]) {
result.push(second[(i / 2)]);
}
}
}
console.log(result);
Вы можете добавить эту строку: if(second[(i / 2)])
, чтобы избежать неопределенности, но, опять же, я не на 100% уверен, какова ваша конечная цель, поэтому я не уверен, что это полностью отвечает на вопрос