无法显示数组内容

时间:2017-07-06 11:12:52

标签: javascript

        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");

这是我的代码,我只是试图将数组的内容与传递的参数进行匹配,但每次它都没有找到数据作为输出而不是匹配的内容,似乎我错过了一些非常基本的东西这里。 任何帮助将非常感谢。谢谢!!

2 个答案:

答案 0 :(得分:2)

您的匹配错误。  您正在匹配letters == fruites。您应该检查是否存在密钥,使用hasOwnProperty()

是否足够

检查以下内容。我提到了错误

&#13;
&#13;
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");
&#13;
&#13;
&#13;

使用for...in

&#13;
&#13;
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")
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您正在将值与错误的键进行比较。

  

hasOwnProperty()方法返回一个布尔值,指示是否   object将指定的属性作为自己的(不是继承的)属性。

使用hasOwnProperty检查密钥是否存在。

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");