2015-09-04 110 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

相关问题