alittlecurryhot
alittlecurryhot

Reputation: 497

Unable to display array content

        var dataHolder = [
        {
            "letterA" : "Fruits",
            "letterB" : "Veges",
            "letterC" : "Meat"
        }
    ];
    console.log(dataHolder[0].letterA);
    var result = "";
    function getData(myLetter) {
        for (var i = 0; i < dataHolder.length; i++) {
           if(dataHolder[i][myLetter] === myLetter){
               console.log(dataHolder[i][myLetter]);
           }
           else{
               console.log("No data found");
           }
            }
        }
    getData("letterA");

This is my code and i'm just trying to match the content of the array with the passed parameter, but every time it's giving No data found as output and not the matching content, it seems i'm missing something very basic here. Any help would be highly appreciated.Thanks!!

Upvotes: 0

Views: 42

Answers (2)

prasanth
prasanth

Reputation: 22510

You matching was wrong. you are matching the letters == fruites .You should check is the key exist or not ,that's enough using hasOwnProperty()

Check this below. i was mention the error

var dataHolder = [{
  "letterA": "Fruits",
  "letterB": "Veges",
  "letterC": "Meat"
}];

var result = "";

function getData(myLetter) {
  for (var i = 0; i < dataHolder.length; i++) {
  console.log('this is the pblm  '+dataHolder[i][myLetter] +' != '+myLetter)
     if (dataHolder[i].hasOwnProperty(myLetter)) {
      console.log(dataHolder[i][myLetter]);
    } else {
      console.log("No data found");
    }
  }
}
getData("letterA");

For your way use with for...in

var dataHolder = [{
  "letterA": "Fruits",
  "letterB": "Veges",
  "letterC": "Meat"
}];

var result = "";

function getData(myLetter) {
  for (var i in dataHolder) {
    if (dataHolder[i].hasOwnProperty(myLetter)) {
      console.log(dataHolder[i][myLetter]);
    } else {
      console.log("No data found");
    }
  }
}
getData("letterA")

Upvotes: 2

Dinesh undefined
Dinesh undefined

Reputation: 5546

You are comparing value with key that is wrong.

The hasOwnProperty() method returns a boolean indicating whether the object has the specified property as own (not inherited) property.

Use hasOwnProperty to check key exists or not.

dataHolder[i].hasOwnProperty(myLetter)

var dataHolder = [
        {
            "letterA" : "Fruits",
            "letterB" : "Veges",
            "letterC" : "Meat"
        }
    ];
   
    var result = "";
    function getData(myLetter) {
        for (var i = 0; i < dataHolder.length; i++) {
       
           if(dataHolder[i].hasOwnProperty(myLetter)){
               console.log(dataHolder[i][myLetter]);
           }
           else{
               console.log("No data found");
           }
            }
        }
    getData("letterA");

Upvotes: 1

Related Questions