Reputation: 43
I am a beginner in Javascript.
I tried to make a function about covert string into uppercase or lowercase.
But I am confused why it can get expected output.
Following is my function purpose and codes.Thank you!
When letter in string is uppercase, it will change into lowercase. When letter in string is lowercase, it will change into uppercase. For example: "Peter" will transfer into "pETER"
I can't understand why my code ends up with "Peter" rather then "pETER"
function swap(str) {
var name = ''
for (i = 0; i <= str.length - 1; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i].toUpperCase()
} else {
str[i].toLowerCase()
}
name += str[i]
}
return name
}
console.log(swap('Peter'))
I am not sure whether the problem is in this line.
if(str[i] >= 'a' && str[i] <= 'z'){
str[i].toUpperCase()
}
Can anyone help me , thanks!!
Upvotes: 4
Views: 3971
Reputation: 37
function name(str){
let newArr = str.split('')
let output = [];
for(let x of newArr){
output.push(x.toUpperCase());
}
return output.join('');
}
name('hello')
Upvotes: 0
Reputation: 674
I think your problem is to think that str[i].toUpperCase() or str[i].toLowerCase() will change the value of the str[i], but it doesn't. These functions will change the char value to uppercase or lowercase and they'll return the result of the function call, but the original variable (str[i]) will remain its value.
Try with this version:
function swap(str) {
var name = ''
var string;
for (i = 0; i <= str.length - 1; i++) {
string = str[i];
if (str[i] == string.toUpperCase()) {
name += string.toLowerCase();
} else {
name += string.toUpperCase();
}
}
return name;
}
console.log(swap('PeTeR'));
Upvotes: 2
Reputation: 13693
Use reduce to accumulate your new string and lowercase/upercase JS functions to check your letters hence do the conversion.
const swap = (str) => str.split('').reduce((acc, char) =>
acc += char === char.toLowerCase() ? char.toUpperCase() :
char.toLowerCase(), '')
console.log(swap('Peter'))
Upvotes: 2
Reputation: 4410
I have changed your code but it should work now
function swap(str) {
var name = ''
var lowers = "abcdefghijklmnopqrstuvwxyz";
for (i = 0; i <= str.length - 1; i++) {
if (lowers.includes(str[i])) {
name +=str[i].toUpperCase()
} else {
name +=str[i].toLowerCase()
}
}
return console.log(name);
}
swap("Peter");
Upvotes: 0
Reputation: 303
This works:
function swap(str) {
var name = ''
for (i = 0; i <= str.length - 1; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
name += str[i].toUpperCase()
} else {
name += str[i].toLowerCase()
}
}
return name
}
console.log(swap('Peter'))
Upvotes: 0