2017-07-06 77 views
0
 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

回答

2

你的配對是錯誤的。 你匹配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

1

您正在使用是錯鍵比較值。

的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