无法显示阵列内容

问题描述:

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

这是我的代码,我只是想与传递的参数数组的内容相匹配,但每次它给无数据时发现,作为输出和不匹配的内容,它似乎我在这里错过了非常基本的东西。 任何帮助将不胜感激。谢谢!无法显示阵列内容

+0

你是比较关键中的价值。例如,如果您调用getData(“letterA”),则比较将在Fruits和letterA之间进行比较。 –

+0

这是一个json对象使用json函数,如json.hasOwnProperty(key)来实现您的目标。 – Osama

你的配对是错误的。 你匹配letters == fruites。你应该检查是关键存在与否,这已经足够使用此之下hasOwnProperty()

检查。我是提了错误

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

+0

只要'dataHolder [i] [myLetter]'的值是真的就可以工作。我可能会稍微调整一下,以使用'in'运算符或'hasOwnProperty'方法。 – MarcoL

+0

myLetter in dataHolder [i] – MarcoL

+0

@MarcoL看到我的更新为...也在 – prasanth

您正在使用是错键比较值。

的hasOwnProperty()方法返回一个布尔值,指示 对象是否具有指定的属性作为自己的(未继承)属性。

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

+0

谢谢你!有效 – tankit88