I've made a function and it checks a string for underscores and it adds to the variable "letter" each time it finds an underscore and I made a string with 5 but it only outputs 1.
const test = function(words) { var letter = 1; for (var i in words) { if ("_" == i) { letter++; if (letter > 26) { letter = 1; } } } console.log(letter); } var word = "_____"; test(word);
i in words <- this is used to access the indexes, inside if use as words[i]
correct code -
const test = function(words) {
var letter = 1;
for (var i in words) {
if ("_" == words[i]) {
letter++;
if (letter > 26) {
letter = 1;
}
}
}
console.log(letter);
}
var word = "_____";
test(word);
You have to use a for of
loop instead of a for in
loop, because it only gives you the index not the value.
const test = function(words) {
var letter = 1;
for (var i of words) {
if ("_" == i) {
letter++;
if (letter > 26) {
letter = 1;
}
}
}
console.log(letter);
}
var word = "_____";
test(word);
If for some reason, you're not using a transpiler like babel and still want this to support in IE, you can use the following snippet:
const test = function(words) {
var letter = 1;
for (var i in words) {
if ("_" == words[i]) {
letter++;
if (letter > 26) {
letter = 1;
}
}
}
console.log(letter);
}
here is your fixed code first letter i start from 0 and o add words.charAt(i)
const test = function(words) { var letter = 0; for (var i in words) { if ("_" == words.charAt(i)) { letter++; if (letter > 26) { letter = 1; } } } console.log(letter); } var word = "_____"; test(word);
This should be work as you expect.
const test = function(words) { var letter = 0; for (var i in words) { if ("_" == words[i]) { letter++; if (letter > 26) { letter = 1; } } } console.log(letter); } var word = "_____"; test(word);
Your code seems wrong to me . You can check the below code :
const test = function(words) {
var letter = 1;
for (var i=0;i<words.length;i++) {
console.log(words.charAt(i));
if ("_" == words.charAt(i)) {
letter++;
if (letter > 26) {
letter = 1;
}
}
}
console.log(letter);
}
I think condition 'letter > 26' might set letter back to 1.
const test = function(words) { var letter = 1; for (var i in words) { if ("_" == words.charAt(i)) { letter++; if (letter > 26) { letter = 1; } } } console.log(letter); } var word = "_____"; test(word);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.