Kishore
Kishore

Reputation: 11

array comparison with alphabets

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

Answers (3)

Code Maniac
Code Maniac

Reputation: 37755

One more way is to use regex and character class

  • ^ - start of string
  • [e-z] - Match any character between e to z

i 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

Amardeep Bhowmick
Amardeep Bhowmick

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"]);
    }
}
You could also use a 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

charlietfl
charlietfl

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

Related Questions