繁体   English   中英

javascript动态添加对象

[英]javascript add object dynamically

我在以下代码中添加了两个评论(带有ID和NAME):

var data =  {
        SKU: 'CS4',
        Name: 'Dell Laptop Inspiron 41',
        Quantity: 1,
        ItemPrice: 121,
        "Reviews" : [
        {
            "ID": 2551,
            "Name": 'john',
        },
        {
            "ID": 255551,
            "Name": 'j5ohn',

        }
    };

在此处输入图片说明 如何动态添加它们(我将使用ajax从其他站点获取评论数据)?

我尝试了这些代码,但我不知道为什么它不起作用,我完全迷路了。

var data =  [{
        SKU: 'CS4',
        Name: 'Dell Laptop Inspiron 41',
        Quantity: 1,
        ItemPrice: 121,

    }];

var total_reviews = 5;

for (i=1; i<=total_reviews; i++) {

     Object.assign(data.Reviews, { "ID": data.from.other.sites.ID, "Name": data.from.other.sites.NAME });

}

您能告诉我我缺少哪一部分吗? 还是可以给我提示或代码让我开始?

data[0].Reviews = []

for (i=1; i<=total_reviews; i++) {

     data[0].Reviews.push({ "ID": data.from.other.sites.ID, "Name": data.from.other.sites.NAME })

}

在示例输出中,对象的Reviews属性是对象数组。 这个简单的代码应该可以帮助您做到这一点:

 var data = [ { SKU: 'CS4', Name: 'Dell Laptop Inspiron 41', Quantity: 1, ItemPrice: 121 } ]; var total_reviews = 5; for (var i = 1; i <= total_reviews; i++) { // This doesn't work because you are trying to push it to an Array. // Object.assign(data.Reviews, { "ID": data.from.other.sites.ID, "Name": data.from.other.sites.NAME }); // First make sure that the array is initialized. data[0].Reviews = data[0].Reviews || []; // Then add the object to your array. data[0].Reviews.push({ "ID": "data.from.other.sites.ID", "NAME": "data.from.other.sites.NAME" }); } 

这应该使您朝正确的方向前进:

if(!data.Reviews){
  data.Reviews = []
}
review = {"ID": "someId", "Name": "someName"}
data.Reviews.push(review)

看来您的数据对象不是普通对象。 这是一个数组。

因此,如果要将新的评论添加到该数组的元素中,请按其键(唯一标识符)找到该元素,然后将新的评论推入元素的“评论”属性中。

const index = data.indexOf(element => element.id === id);
if (index !== -1) {
    for (let i = 0; i < total_reviews; i++) {
        data[index]['Reviews'].push({ "ID": data.from.other.sites.ID, "Name": data.from.other.sites.NAME };
    }
}

请检查以下内容:

 var data = { SKU: 'CS4', Name: 'Dell Laptop Inspiron 41', Quantity: 1, ItemPrice: 121, "Reviews" : [ { "ID": 2551, "Name": 'john', }, { "ID": 255551, "Name": 'j5ohn', }] }; var total_reviews = 5; for (i=1; i<=total_reviews; i++) { data.Reviews.push({ "ID": 'id_'+i, "Name": 'name_'+i }) } console.log(data.Reviews); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM