【发布时间】:2017-07-28 12:42:44
【问题描述】:
预期结果说明
我的来源是超过 30,000 行非常结构化的文本,前面的数字递增,后面的数字递增,并用冒号分隔。去掉非必需项,我留下了以下 sourceArray,为方便起见被截断:)
sourceArray = ["001:001", "001:002", "001:003",
"002:001", "002:002",
"003:001", "003:002"];
我正在尝试计算每个前数的后数并将其推送到数组中。在伪代码中,我的最终结果应该是这样的:
myArray[totalNumberOf_001_Items, totalNumberOf_002_Items, totalNumberOf_003_Items]
在我的简单示例中,最终值应该是:
[3, 2, 2]
问题和疑问
我的 for 循环在我的数据末尾结束,因此我的数组中缺少一个元素。
如何在循环中进行“额外的传递”,或者是否有其他方法可以将最终元素推送到我的数组?
var sourceArray = ["001:001", "001:002", "001:003",
"002:001", "002:002",
"003:001", "003:002"
];
var myArray = [];
var frontCounter = 1;
var backCounter = 1;
for (var i = 0; i < sourceArray.length; i++) {
var text = sourceArray[i];
var front = text.substr(0, 3);
front = Number(front);
var back = text.substr(4, 3);
back = Number(back);
if (front == frontCounter) {
backCounter++;
} else {
myArray.push(backCounter - 1);
backCounter = 2;
frontCounter++;
}
}
console.log(myArray); // result [3, 2]
【问题讨论】:
-
var i = 0; i <= sourceArray.length;我想添加一个='s ;这将在循环中添加一个额外的通道 -
最终值不会是
[3, 3, 1]吗? -
从读到这里:“我正在尝试计算每个前面的数字有多少个后面的数字”我认为它会是 [3, 3, 1]
-
@JonathanPortorreal 和
=,额外的循环导致 sourceArray[i] 变为undefined。 -
@DulyKinsky 循环 1:myArray = [1],循环 2:myArray = [2],循环 3:myArray = [3] 符合预期。然后循环 4 出现并跳到 else 语句。 myArray = [3] 和以前一样。作为补偿,backCounter 被重置为 2。循环 5:myArray = [3, 2]。这是一个非常简化的例子。由于我的实际数据仅限于 5 个前面的数字,我最终得到的结果更像 [31, 25, 21, 26]。但是没有将最终元素推送到数组。
标签: javascript arrays for-loop