Reputation: 11
i want to print alphabets after 'd' alphabet it is small or capital for small alphabet it works fine problem with capital alphabet
var data = [{ name: "egg" }, { name: "apple" }, { name: "cook" }, { name: "FISH" }];
for (var i = 0; i < data.length; i++) {
var alpha = data[i]["name"][0];
if (alpha >= 'd' || alpha >= 'D') {
console.log(data[i]["name"]);
}
}
i expected result as egg,FISH but the actual output is egg,apple,cook,FISH
Upvotes: 1
Views: 146
Reputation: 37755
One more way is to use regex and character class
^
- start of string[e-z]
- Match any character between e to zi
flag make it case insensitive
var data = [{name: "egg"}, { name: "apple"}, {name: "cook"}, {name: "FISH"}];
let final = data.map(({name}) => name)
.filter(name => /^[e-z]/i.test(name))
console.log(final)
Upvotes: 0
Reputation: 16908
You can also use String.prototype.localeCompare
which compares strings in a case insensitive way by default:
var data= [{name:"egg"},{name:"apple"},{name:"cook"},{name:"FISH"}];
for(var i=0;i<data.length;i++){
var alpha = data[i]["name"][0];
if( alpha.localeCompare('d') > 0){
console.log(data[i]["name"]);
}
}
map
, filter
and forEach
chain:
var data= [{name:"egg"},{name:"apple"},{name:"cook"},{name:"FISH"}];
data.map(({name}) => name)
.filter(str => str[0].localeCompare('d') > 0)
.forEach(str => console.log(str));
Upvotes: 2
Reputation: 171669
Just do one comparison to the lowercase version
var data= [{name:"egg"},{name:"apple"},{name:"cook"},{name:"FISH"}];
for(var i=0;i<data.length;i++){
var alpha = data[i]["name"][0].toLowerCase();
if( alpha >= 'd' ){
console.log(data[i]["name"]);
}
}
Upvotes: 1