让 array.push 无所事事
Getting a array.push to do nothing
试图找出一种方法,如果我的循环结果等于未定义,让我的 array.push 什么都不做。这是我的代码。
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]);
result.push(second[parseInt(i)/2]);
}else {
}
}
奇数时得到结果:(偶数时)
array results (12) ["1001", "9003", "3001", "9005", "3002", "9006", "3003", "9007", "9001", "9008", "9002", undefined]
result.push(second[parseInt(i)/2]);
如果你有一个奇数,这是不确定的,因为 second.length
比 barcodes
的一半小。因此,如果 barcodes.length == 11
,则第二次推送是在 second.length == 5
时推送 second[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% 确定您的最终目标是什么所以我不确定这是否完全回答了问题
您可以使用 barcode
数组并为推送的第二个值取一个偏移量。
长度的调整保持相同的元素组,只在末尾添加一个undefined
。
Examples:
given
barcode 0 1 2 3 4 5 6 7 8
first 0 1 2 3 4
second 5 6 7 8
result
0 5 1 6 2 7 3 8 4 undefined
given
barcode 0 1 2 3 4 5 6 7 8 9
first 0 1 2 3 4
second 5 6 7 8 9
result
0 5 1 6 2 7 3 8 4 9
var barcodes = [0, 1, 2, 3, 4, 5, 6, 7, 8],
result = [],
i,
l = (barcodes.length + 1) >> 1;
for (var i = 0; i < l; i++) {
result.push(barcodes[i], barcodes[i + l]);
}
console.log(result);
试图找出一种方法,如果我的循环结果等于未定义,让我的 array.push 什么都不做。这是我的代码。
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]);
result.push(second[parseInt(i)/2]);
}else {
}
}
奇数时得到结果:(偶数时)
array results (12) ["1001", "9003", "3001", "9005", "3002", "9006", "3003", "9007", "9001", "9008", "9002", undefined]
result.push(second[parseInt(i)/2]);
如果你有一个奇数,这是不确定的,因为 second.length
比 barcodes
的一半小。因此,如果 barcodes.length == 11
,则第二次推送是在 second.length == 5
时推送 second[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% 确定您的最终目标是什么所以我不确定这是否完全回答了问题
您可以使用 barcode
数组并为推送的第二个值取一个偏移量。
长度的调整保持相同的元素组,只在末尾添加一个undefined
。
Examples:
given
barcode 0 1 2 3 4 5 6 7 8 first 0 1 2 3 4 second 5 6 7 8
result
0 5 1 6 2 7 3 8 4 undefined
given
barcode 0 1 2 3 4 5 6 7 8 9 first 0 1 2 3 4 second 5 6 7 8 9
result
0 5 1 6 2 7 3 8 4 9
var barcodes = [0, 1, 2, 3, 4, 5, 6, 7, 8],
result = [],
i,
l = (barcodes.length + 1) >> 1;
for (var i = 0; i < l; i++) {
result.push(barcodes[i], barcodes[i + l]);
}
console.log(result);