javascript - 为什么切片这个字符串并使其成为一个数组会将未定义添加到数组的元素中?
问题描述
这是我的代码 - 我想将字符串“areas”的一部分存储到一个数组中。不幸的是,我得到未定义的附加到数组元素。我是 javascript 和整个编码的新手。
任何帮助都会很棒:-)
let areas = '10101101110001101010011101001110000101011000101010100010011001101100110110011010000101001110101';
// checking guards
leftGuard = areas.substr(0,3);
if (leftGuard !== '101')
{
return result.message1;
}
centerGuard = areas.substr(45,5);
if (centerGuard !== '01010')
{
return result.message2;
}
rightGuard = areas.substr(92,3);
if (rightGuard !== '101')
{
return result.message3;
}
// segregate the areas string into left and right digit and store in an array
let newAreaLeft = areas.slice(3,45);
let newAreaRight = areas.slice(51,92);
// left nos.
let i = 0, j = 0;
while (j < 42)
{
realLeft[i] += newAreaLeft.substr(j,7);
j += 7;
i++
}
输出:
未定义0110111,未定义0001101,未定义0100111,未定义0100111,未定义0000101,未定义0110001
解决方案
数组的未初始化元素返回为undefined
,在字符串表达式中转换为“未定义”。
尝试realLeft
使用直接分配设置而不是+=
覆盖未定义的条目(如果可以接受):
realLeft[i] = newAreaLeft.substr(j,7);
或者在附加之前将未初始化的值设置为空字符串:
realLeft[i] = realLeft[i] || ""; // change falsey values to empty string
realLeft[i] += newAreaLeft.substr(j,7);
推荐阅读
- grafana - Grafana 在查询中使用通配符设置警报
- .net - Stripe 为同一客户创建多张卡片
- apache-flink - Flink - 纱线节点终止后无法恢复
- python - add_axes 涵盖以前的情节
- python - 为什么 heapq.heapify 在将切片传递给列表时不会更改列表?
- push-notification - Expo如何管理一千个推送通知的FCM令牌?
- jquery - 单击事件时未更新数据 ID
- git - 通过 Git 在 Github 的公共存储库中上传时卡住了
- python - 如何在python中使用单个数据点创建多个散点图?
- reflection - 如何在不实际对路径进行硬编码的情况下确定记录中字段的 json 路径?