如何生成识别类似元素字符串的JavaScript代码?
我目前正在尝试编写一个JavaScript程序,它能够识别类似元素的字符串。例如,假设您拥有有序变量如何生成识别类似元素字符串的JavaScript代码?,javascript,algorithm,variables,Javascript,Algorithm,Variables,我目前正在尝试编写一个JavaScript程序,它能够识别类似元素的字符串。例如,假设您拥有有序变量 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 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个数?
谢谢首先,我很难记住语言,所以请容忍我…这将是一些丑陋的psudocode eval将成为你的朋友。 使用一个for循环和一个数组来创建类似这样的值列表
Array numbers = new Array[10]
for(i = 1, i<10, i++){
numbers [I]=eval("x"+ i).Value()
}
count = 0
countsArray[10]
for(I = 0, I < stuff.size, I++){
if(stuff[I] = 1)
count++
if(stuff[I] = 0){
countsArray.Add(count);
count=0;
}
}
//Print your counts or whatever here.
这会把你的数字列在一个列表中,然后你就可以使用它了
现在可以这样做for循环
Array numbers = new Array[10]
for(i = 1, i<10, i++){
numbers [I]=eval("x"+ i).Value()
}
count = 0
countsArray[10]
for(I = 0, I < stuff.size, I++){
if(stuff[I] = 1)
count++
if(stuff[I] = 0){
countsArray.Add(count);
count=0;
}
}
//Print your counts or whatever here.
不知道……我想你也可以在一个循环中巧妙地处理这些事情 您说过可以使用数组。看起来是这样的:
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);
}
ArrayforEach调用您为每个条目提供的函数一次,并传入该条目。我们用它来比较发现的,如果是匹配的,我们增加计数。如果不是,也不是第一次,我们会说我们以前发现的东西,然后记住我们发现的新东西
在第一个过程中,找不到===项的原因是变量的默认值未定义,而未定义的不是===0或1,因为===是严格的相等运算符,这意味着只有当操作数具有相同的类型和值时,才认为它们相等。undefined不是数字,因此它的类型不同
实例:
变量x=[
1.
1.
0,
0,
1.
1.
1.
0,
1.
0
];
找到变量;//默认值为“未定义”`
var计数=0;
x、 外汇输入{
如果找到===条目{
++计数;
}否则{
如果算上{
snippet.logFound+count++found;
}
发现=输入;
计数=1;
}
};
如果算上{
snippet.logFound+count++found+s;
}
问题在于出发点:您不需要一个名称中有数字的变量列表。你想要一个数组。你应该把变量变成一个对象,这样更容易使用…我不太确定数组是什么。你知道有什么好地方可以让我学习如何使用它们吗?我可以使用像字典一样的对象,但根据规格,对象属性是不排序的。你需要一个数组。使用window[x+i]是你访问变量的一个选项吗?javascript中没有这样的类型。是的,我知道……请看我关于不记住语言的第一条评论。算法是他们需要的,不一定是代码。评估功能将为他提供他们所需的大部分。非常感谢你的帮助。最后一个问题:如何获得输出?我已经尝试将其放入一个基本的HTML脚本中,请参见:,但这并没有给出输出。我还尝试将document.getElementById'div'.innerHTML=Found+count++Found+s添加到函数和HTML中,但这给出了错误的输出。我做错了什么?此外,这是记录输出的最佳方法吗?@user2910074:如上所述,使用console.log,输出位于浏览器开发工具的web控制台部分。好的,那么您能告诉我“console.log”和“snippet.log”之间的区别吗?再次感谢。