用于将对象添加到对象数组的javascript push()方法

时间:2017-03-22 20:58:04

标签: javascript javascript-objects

var model = {
  cats: [
    {
        clickCount: 0,
        name: "Panther",
        imgUrl: "images/cat1.png"           
    },
    {
        clickCount: 0,
        name: "Tiger",
        imgUrl: "images/cat2.png"           
    },
    {
        clickCount: 0,
        name: "Rocky",
        imgUrl: "images/cat3.png"           
    },
    {
        clickCount: 0,
        name: "Marshal",
        imgUrl: "images/cat4.png"           
    },
    {
        clickCount: 0,
        name: "Simpson",
        imgUrl: "images/cat5.png"           
    },
    {
        clickCount: 0,
        name: "Kajol",
        imgUrl: "images/cat6.png"           
    }
  ]
};
catObject = {
                name: document.getElementById('text-name').value,
                url: document.getElementById('text-url').value,
                count: document.getElementById('text-count').value
            };

model是一个对象数组。我试图使用model.cats.push(catObject)添加另一个对象; 其中text-name,text-url,text-count是表单中文本框的ID。 我没有得到理想的结果。我发现只有catObject.name被推送到了model.cats而catObject.url和catObject.count没有被添加,因此未定义'是model.cats.imgUrl和model.cats.clickCount的值。 如果需要,我可以添加完整代码。我尝试过这样的事情......有人可以检查我是否遗漏了什么?提前谢谢。

1 个答案:

答案 0 :(得分:0)

<强>校正

model不是一个对象数组,而model是一个包含属性(即cats)的对象,它是一个对象数组。

你是对的

根据您的说明,您已使用catObject

成功将cats推送到model.cats.push(catObject);

出了什么问题

您可能已经使用loop来访问cats数组中的元素,并获得undefined的{​​{1}}和model.cats.clickCount只有你最后一个对象的model.cats.imgUrl推送,因为您将catObject的属性命名为urlcount(即代替imgUrlclickCount)。因此,只需将属性名称更改为imgUrlclickCount即可解决问题。

Corrected code here