如何将数据推送到对象中

How to push data into an object?

本文关键字:对象 数据      更新时间:2024-07-03

我有一个对象,我正试图将数据推入其中,但我得到了错误"push不是函数"。

这是我的目标:

var item = {
  "_id": {
    "$oid": "asdf976"
  },
  "Categories": [{
    "mainmodels": [{
      "submodels": [{
          "price": "2000",
          "submodelname": "lumia021",
          "Remainingphones": "0",
          "Bookedphones": "0",
          "Numofphones": "10"
        }, {
          "price": "2000",
          "submodelname": "lumia341",
          "Remainingphones": "5",
          "Bookedphones": "5",
          "Numofphones": "10"
        }
      ],
      "Status": "Active",
      "modelname": "lumia",
      "fromdate": "2016-04-01T16:39:12.051Z",
      "todate": "2016-04-31T19:19:44.051Z"
    }],
    "brand": "nokia"
  }],
  "rank": "1",
  "name": "first"
}

我想推送:

var modal = {
                'custid': '1',
                'packcode': '22'
            };
            item.push(modal);
            console.log(item);

这是我的预期结果:

var item = {
  "_id": {
    "$oid": "asdf976"
  },
  "Categories": [{
    "mainmodels": [{
      "submodels": [{
          "price": "2000",
          "submodelname": "lumia021",
          "Remainingphones": "0",
          "Bookedphones": "0",
          "Numofphones": "10"
        }, {
          "price": "2000",
          "submodelname": "lumia341",
          "Remainingphones": "5",
          "Bookedphones": "5",
          "Numofphones": "10"
        }
      ],
      "Status": "Active",
      "modelname": "lumia",
      "fromdate": "2016-04-01T16:39:12.051Z",
      "todate": "2016-04-31T19:19:44.051Z"
    }],
    "brand": "nokia"
  }],
  "rank": "1",
  "name": "first",
  'custid': '1',
  'packcode': '22'
};

我该怎么做?

您不将push转换为对象,而是将push转换为数组。

根据你所说的你想要的,你可以这样做:

item.custid = '1';
item.packcode = '22';

例如,只需为对象指定属性。

在ES2015中,如果modal分离很重要,则可以使用Object.assign

var modal = {custid: '1', packcode: '22'};
Object.assign(item, modal);

但我认为这里没有必要,并注意到modalitem之间没有持续的链接。

实时示例:

var item = {
  "_id": {
    "$oid": "asdf976"
  },
  "Categories": [{
    "mainmodels": [{
      "submodels": [{
          "price": "2000",
          "submodelname": "lumia021",
          "Remainingphones": "0",
          "Bookedphones": "0",
          "Numofphones": "10"
        }, {
          "price": "2000",
          "submodelname": "lumia341",
          "Remainingphones": "5",
          "Bookedphones": "5",
          "Numofphones": "10"
        }
      ],
      "Status": "Active",
      "modelname": "lumia",
      "fromdate": "2016-04-01T16:39:12.051Z",
      "todate": "2016-04-31T19:19:44.051Z"
    }],
    "brand": "nokia"
  }],
  "rank": "1",
  "name": "first"
};
item.custid = '1';
item.packcode = '22';
// Note: Just using JSON for *display*
document.body.innerHTML =
  "<pre>" + JSON.stringify(item, null, 2) + "</pre>";

或者使用Object.assign(需要最新的浏览器或垫片):

var item = {
  "_id": {
    "$oid": "asdf976"
  },
  "Categories": [{
    "mainmodels": [{
      "submodels": [{
          "price": "2000",
          "submodelname": "lumia021",
          "Remainingphones": "0",
          "Bookedphones": "0",
          "Numofphones": "10"
        }, {
          "price": "2000",
          "submodelname": "lumia341",
          "Remainingphones": "5",
          "Bookedphones": "5",
          "Numofphones": "10"
        }
      ],
      "Status": "Active",
      "modelname": "lumia",
      "fromdate": "2016-04-01T16:39:12.051Z",
      "todate": "2016-04-31T19:19:44.051Z"
    }],
    "brand": "nokia"
  }],
  "rank": "1",
  "name": "first"
};
var modal = {
  custid: '1',
  packcode: '22'
};
Object.assign(item, modal);
// Note: Just using JSON for *display*
document.body.innerHTML =
  "<pre>" + JSON.stringify(item, null, 2) + "</pre>";