2015-09-04 99 views
0

自從我使用JavaScript以來,我一直在想一些不同的方式來在好奇心中用JavaScript做事情。有人能告訴我如何在單個函數調用中輸出cars對象中的所有數據嗎?我知道我可以使用點符號單獨輸出特定值,但我想知道是否/如何一次性獲取對象中cars對象中每個對象的所有值。這可能嗎?如何從JavaScript對象(包含對象數組)使用javascript獲取所有值

var cars = [{ 
 
    car1: { 
 
     "owner": "lois", 
 
      "make": "chevy", 
 
      "model": "malibu", 
 
      "year": "2011", 
 
      "color": "red" 
 
    } 
 
}, { 
 
    car2: { 
 
     "owner": "jeff", 
 
      "make": "ford", 
 
      "model": "focus", 
 
      "year": "2002", 
 
      "color": "silver" 
 
    } 
 
}, { 
 
    car3: { 
 
     "owner": "bob", 
 
      "make": "chrysler", 
 
      "model": "pacifica", 
 
      "year": "2008", 
 
      "color": "blue" 
 
    } 
 
}, { 
 
    car4: { 
 
     "owner": "sallie", 
 
      "make": "toyota", 
 
      "model": "corolla", 
 
      "year": "2011", 
 
      "color": "black" 
 
    } 
 
}]; 
 

 

 

 

 
function carOwners(obj_arr) { 
 
    //this.ownerName2 = cars[1].owner; 
 
    //this.ownerName3 = cars[2].owner; 
 
    //this.ownerName4 = cars[3].owner; 
 
    /* console.log("The vehicle owner's name are " + ownerName1 + ", " + ownerName2 + ", " + ownerName3 + ", and " + ownerName4 + "."); */ 
 

 
    for (var i = 0, len = cars.length; i < len; i++) { 
 
     for (var key in cars) { 
 
      console.log(' name=' + key + ' value=' + cars[key]); 
 
     } 
 
    } 
 

 
} 
 

 
carOwners(cars); 
 
//carOwners(cars[1].owner); 
 
//carOwners(cars[2].owner); 
 
//carOwners(cars[3].owner);

當我運行該功能,我得到的結果如下(在Chrome中打開控制檯),但是這不是我想要的。我想查看每個數據(解析對象),而不是數據類型。

name=0 value=[object Object] 
name=1 value=[object Object] 
name=2 value=[object Object] 
name=3 value=[object Object] 
name=0 value=[object Object] 
name=1 value=[object Object] 
name=2 value=[object Object] 
name=3 value=[object Object] 
name=0 value=[object Object] 
name=1 value=[object Object] 
name=2 value=[object Object] 
name=3 value=[object Object] 
name=0 value=[object Object] 
name=1 value=[object Object] 
name=2 value=[object Object] 
name=3 value=[object Object] 

謝謝。


ADDED解釋這是爲什麼不重複: 這只是我的看法,但我坐在那裏,我的問題很簡單:我要輸出對象的所有值一舉。我沒有檢查缺失值。在另一個線程中非常明顯,查詢是關於檢查缺失值,而不是在一個函數調用中輸出所有值,因爲我正在詢問如何執行。在這個線程中,我在下面的註釋中解決了重複的比較。我沒有提出我的問題來尋找缺失的東西,而且我知道我不會閱讀該線索來找到我的答案。想想吧,當我開始在標題框中輸入我的問題時,那個問題(您列出的比較)從不出現 - 我讀每個建議顯示在我的標題框中回答,以及在頁面的右側,然後花時間寫出所有這些。我不能解釋它比這更好。謝謝。

+0

這不是JSON,它是一個JavaScript對象字面量。 – meagar

+0

[檢查數組鍵是否存在於JavaScript對象或數組中?](http://stackoverflow.com/questions/1098040/checking-if-an-array-key-exists-in-a-javascript-對象或數組) – Ryan

+1

它似乎不是那個的重複 –

回答

2

不知道這是否是你問什麼,但你可以這樣做:

console.log(JSON.stringify(cars)); 
+0

我會試試。謝謝。 – Chris22

+1

這個效果很好,GPicazo,謝謝 – Chris22

1

使用JSON.stringify(cars)

或者,你可以用cars.toString(),它會工作,除非它的一些內置的功能,但不會轉換嵌套對象。

subtle differences,但兩者應該做你期望

+0

如何在此代碼中使用toString()?謝謝。 – Chris22

+0

@meagar謝謝我會嘗試 – Chris22

+0

@meagar我試過並記錄下來:'[object object],[object object],[object Object],[object Object] 16(index):70 [object Object ],[object object],[object object],[object Object]' – Chris22

1

通過你的車陣進入此功能:

$.getJSON(your_variable, function (data){ 
    $.each(data, function(key, val) { 
    for(var i in val) { 
    console.log("owner is: " + val[i].owner); 
    console.log("make is: " + val[i].make); 
    console.log("model is " + val[i].model); 
    console.log("year is " + val[i].year); 
    console.log("color is " + val[i].color); 
    } 
    }); 
}); 
+0

謝謝這是一種不同的方式。我喜歡'for in'循環使用。我會運行這個來看看它是如何工作的。 – Chris22

+1

聽起來不錯! :-)希望它能解決問題! – hhyder

相關問題