我目前正在尝试编写一个能够识别相似元素字符串的 JavaScript 程序。例如,假设您有 ordered 变量
var x1 = 1;
var x2 = 1;
var x3 = 0;
var x4 = 0;
var x5 = 1;
var x6 = 1;
var x7 = 1;
var x8 = 0;
var x9 = 1;
var x10 = 0;
我正在尝试生成一个程序,它可以告诉您这些有序变量包含一个由两个 1 组成的字符串、一个由三个 1 组成的字符串以及一个由一个 1 组成的字符串。
我想我可以使用 if 语句来做到这一点,也许是这样
var i = 1;
var s = 0;
if(x_i == 1) {
var s = s ++;
var i = i++
}
elseif(x_i == 0) {
document.getElementById('string-length').innerHTML = s;
}
但是,将x_i写成指代每个变量x1,x2,x3, ...显然是不正确的
我应该怎么做才能让程序按顺序查看每个变量,然后考虑有序变量列表中连续 1 的数量?
谢谢
最佳答案
您说过您愿意使用数组。看起来像这样:
var x = [
1,
1,
0,
0,
1,
1,
1,
0,
1,
0
];
然后您可以遍历该数组,跟踪您看到的内容:
var found; // Defaults to the value `undefined`
var count = 0;
x.forEach(function(entry) {
if (found === entry) {
++count;
} else {
if (count) {
console.log("Found " + count + " " + found + "s");
}
found = entry;
count = 1;
}
});
if (count) {
console.log("Found " + count + " " + found);
}
Array#forEach
调用您为每个条目提供的函数一次,传入条目。我们用它来与 found
进行比较,如果匹配,我们增加 count
。如果没有(这不会是第一次),我们会说出我们之前发现的东西(如果有的话),然后记住我们发现的新东西。
found
在第一次通过时不会是 === entry
的原因是变量的默认值为 undefined
,并且 undefined
不是 ===
0 或 1,因为 ===
是“严格”相等运算符,这意味着操作数只有当它们具有相同的类型和值时才被认为是相等的。 undefined
不是一个数字,所以它没有相同的类型。
实例:
var x = [
1,
1,
0,
0,
1,
1,
1,
0,
1,
0
];
var found; // Defaults to the value `undefined`
var count = 0;
x.forEach(function(entry) {
if (found === entry) {
++count;
} else {
if (count) {
snippet.log("Found " + count + " " + found);
}
found = entry;
count = 1;
}
});
if (count) {
snippet.log("Found " + count + " " + found + "s");
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
关于javascript - 如何制作识别相似元素字符串的 JavaScript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34229284/