如何使用javascript从JavaScript对象(包含对象数组)中获取所有值

时间:2015-09-04 22:57:44

标签: javascript

自从我使用JavaScript以来,已经有一段时间了,而我只是试图想出用好奇心做JavaScript的不同方法。有人能告诉我如何在单个函数调用中输出cars对象中的所有数据吗?我知道我可以使用点表示法单独输出特定值,但我想知道是否/如何一次性获取对象中cars对象中每个对象的所有值。这可能吗?



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

当我运行该功能时,我得到以下结果(在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 解释为什么这不重复: 这只是我的意见,但从我坐的地方来看,我的问题很简单:我想一举输出一个对象的所有值。我没有检查缺失值。在另一个线程中非常明显的是,查询是关于检查缺失值,而不是在我询问如何操作时输出一个函数调用中的所有值。在这个帖子中,我在下面的评论中解决了重复的比较。我没有说出我的问题,寻找任何遗漏的东西,我知道我不会阅读那个帖子来找到我的答案。想一想,当我开始在标题框中输入我的问题时,那个问题(你列出来进行比较)从不出现了 - 我读了我的答案的标题框中显示的每个建议,以及在花时间写出所有这些内容之前在页面的右侧。我无法解释它比这更好。感谢。

3 个答案:

答案 0 :(得分:2)

不确定这是否正是您所要求的,但您可以这样做:

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

答案 1 :(得分:1)

使用JSON.stringify(cars)

或者,您可以使用cars.toString(),除非它是一些内置函数,否则它将起作用,但不会转换嵌套对象。

subtle differences,但两者都应该达到预期的效果

答案 2 :(得分: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);
   }
  });
});