Javascript 从对象获取值

Javascript 从对象获取值,javascript,arrays,object,Javascript,Arrays,Object,我的目标如下: (已获取包含此代码的内容:) 我对JavaScript非常陌生,希望获得一些值,例如“家庭式早餐”(最后一个)的所有值 为什么那个代码不起作用? 我无法从该代码中获得任何信息。因为食物是一个数组,您应该首先通过索引访问该数组,才能访问其中的对象: thisResult = ''; thisResult += 'Name: ' + objData.food[0].name; thisResult += '\nPrice: ' + objData.food[0].price;

我的目标如下: (已获取包含此代码的内容:)

我对JavaScript非常陌生,希望获得一些值,例如“家庭式早餐”(最后一个)的所有值

为什么那个代码不起作用?
我无法从该代码中获得任何信息。

因为
食物
是一个数组,您应该首先通过索引访问该数组,才能访问其中的对象:

thisResult = '';

thisResult += 'Name: ' + objData.food[0].name;

thisResult += '\nPrice: ' + objData.food[0].price;

thisResult += '\nDescription: ' + objData.food[0].description;

thisResult += '\nCalories: ' + objData.food[0].calories;
这可以是循环的主体,您可以为数组中的每个对象构建字符串(
food
)是一个数组,因此您应该迭代它,或者您应该知道需要显示哪个键。例如,如果您想要最后一个,则应使用
objData.food[4]
objData.food[objData.food.length-1]

您可以使用以下命令循环它:

for (var i = 0; i < objData.food.length; i++) {
    var food = objData.food[i];

    // for example display only that with name = Homestyle Breakfast
    if (food.name === 'Homestyle Breakfast') {
        thisResult = '';
        thisResult += 'Name: ' + food.name;
        thisResult += '\nPrice: ' + food.price;
        thisResult += '\nDescription: ' + food.description;
        thisResult += '\nCalories: ' + food.calories;
    }
}
for(var i=0;i
因为
食物
是一个数组对象,您希望像对待它一样对待它:

var objData={
“食物”:[{
“名称”:“比利时华夫饼”,
“价格”:“$5.95”,
“描述”:“两个著名的比利时华夫饼干,富含真正的枫糖浆”,
“卡路里”:“650”
}, {
“名称”:“草莓比利时华夫饼干”,
“价格”:“7.95美元”,
“描述”:“覆盖草莓和鲜奶油的淡比利时华夫饼干”,
“卡路里”:“900”
}, {
“名称”:“浆果比利时华夫饼干”,
“价格”:“$8.95”,
“描述”:“覆盖各种新鲜浆果和鲜奶油的淡比利时华夫饼干”,
“卡路里”:“900”
}, {
“名称”:“法式吐司”,
“价格”:“$4.50”,
“描述”:“用我们自制的酸面包做成的厚片”,
“卡路里”:“600”
}, {
“姓名”:“家庭式早餐”,
“价格”:“$6.95”,
“描述”:“两个鸡蛋、培根或香肠、土司和我们一直流行的炸土豆条”,
“卡路里”:“950”
}]
}
这个结果='';
thisResult+='Name:'+objData.food[0].Name;
此结果+='\n价格:'+objData.food[0]。价格;
此结果+='\n说明:'+objData.food[0]。说明;
此结果+='\n卡路里:'+objData.food[0]。卡路里;

警报(此结果)原因是你的食物是一个数组

要解决这个问题,您可以创建一个函数来查找具有特定名称的食物对象,然后返回该对象

var objData={“食品”:[{“名称”:“比利时华夫饼”,“价格”:“$5.95”,“说明”:“我们著名的两种比利时华夫饼,含有大量真正的枫叶糖浆”,“卡路里”:“650”},{“名称”:“草莓比利时华夫饼”,“价格”:“$7.95”,“说明”:“覆盖草莓和鲜奶油的淡比利时华夫饼”,“卡路里”:“900”{“名称”:“贝瑞贝瑞比利时华夫饼”,“价格:“$8.95”,“说明:”:“覆盖各种新鲜浆果和鲜奶油的淡比利时华夫饼”,“热量:”:“900”;“{”名称:“:”法式吐司”,“价格:“$4.50”,“说明:”:“自制酸面包制成的厚片”,“热量:”:“600”;“{”名称:“:“家庭式早餐”,“价格:”$6.95”,“说明:”两个鸡蛋,培根或香肠,土司,和我们一直流行的棕色煎饼,“卡路里”:“950”}]};
var json=json.stringify(objData);
函数getObjectByName(名称){
var食品={};
for(var i=0;i
更通用的方法:
var obj={“食品”:[{“名称”:“比利时华夫饼”,“价格”:“$5.95”,“说明”:“我们著名的两种比利时华夫饼,富含真正的枫叶糖浆”,“卡路里”:“650”},{“名称”:“草莓比利时华夫饼”,“价格”:“$7.95”,“说明”:“覆盖草莓和鲜奶油的淡比利时华夫饼”,“卡路里”:“900”},{“名称”“:”浆果比利时华夫饼“,”价格“:”8.95美元“,”说明“:”覆盖各种新鲜浆果和鲜奶油的淡比利时华夫饼“,”卡路里“:”900“,”{”姓名“:”法式吐司“,”价格“:”4.50美元“,”说明“:”自制酸面包制成的厚片“,”卡路里“:”600“,{”姓名“:”家庭式早餐“,”价格“:“$6.95”,“描述”:“两个鸡蛋,培根或香肠,土司,和我们一直流行的炸土豆条”,“卡路里”:“950”}]};
功能食品(名称){
var项目;
obj.食品.一些(功能(a){
如果(a.name==名称){
项目=a;
返回true;
}
});
退货项目
}
函数printFoodItem(项目){
var cols=[{name:'name'},{price:'price'},{description:'description'},{carries:'carries'}];
返回cols.reduce(函数(r,a,i){
var k=对象键(a);
项目中的k和r.push(a[k]+':'+项目[k]);
返回r;
},[])。连接('\n');
}

文件。写(“”+printFoodItem(getFood('French Toast'))+“”)感谢大家提供了非常有用的答案!
thisResult = '';

thisResult += 'Name: ' + objData.food[0].name;

thisResult += '\nPrice: ' + objData.food[0].price;

thisResult += '\nDescription: ' + objData.food[0].description;

thisResult += '\nCalories: ' + objData.food[0].calories;
for (var i = 0; i < objData.food.length; i++) {
    var food = objData.food[i];

    // for example display only that with name = Homestyle Breakfast
    if (food.name === 'Homestyle Breakfast') {
        thisResult = '';
        thisResult += 'Name: ' + food.name;
        thisResult += '\nPrice: ' + food.price;
        thisResult += '\nDescription: ' + food.description;
        thisResult += '\nCalories: ' + food.calories;
    }
}
var foodStore = {"food":[{"name":"Belgian Waffles","price":"$5.95","description":"Two of our famous Belgian Waffles with plenty of real maple syrup","calories":"650"},{"name":"Strawberry Belgian Waffles","price":"$7.95","description":"Light Belgian waffles covered with strawberries and whipped cream","calories":"900"},{"name":"Berry-Berry Belgian Waffles","price":"$8.95","description":"Light Belgian waffles covered with an assortment of fresh berries and whipped cream","calories":"900"},{"name":"French Toast","price":"$4.50","description":"Thick slices made from our homemade sourdough bread","calories":"600"},{"name":"Homestyle Breakfast","price":"$6.95","description":"Two eggs, bacon or sausage, toast, and our ever-popular hash browns","calories":"950"}]}, // your object
    find = function find( type, field, value ) {
        return foodStore[type].filter(function (record) {
            if (record[field] === value) return true;
            return false;
        })[0];
    },
    mySearch = find('food', 'name', 'Homestyle Breakfast');