javascript - 让 array.push 什么都不做
问题描述
试图找出一种方法,如果我的循环结果等于未定义,让我的 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[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% 确定您的最终目标是什么,所以我不确定这是否完全回答了问题
推荐阅读
- keras - 在 Keras 中使用 LSTM 对时间序列进行变分自动编码器
- arrays - 根据数组中的其他值对多维数组值求和
- android - 如何获得智能卡的 APDU?
- typescript - 有没有办法在同一个变量下有一个 Subject 和 Observable
- node.js - 将字符串与来自 Skype 聊天的用户输入进行比较
- php - 在使用 cloud9 IDE 时,我应该如何设置 Facebook 应用程序域?
- oracle - 将本地机器中的 SSIS 连接到远程服务器 oracle 数据库
- mysql - 创建 MySQL 分层递归查询
- git - 如何将单个 git 分支从一台计算机移动到另一台计算机
- java - 反射获取特定类中带注释的所有方法