附加到不是数组的JS对象?

时间:2016-10-13 04:16:59

标签: javascript jquery arrays node.js object-literal

我有一个看起来像这样的对象

{
  "_id": "DEADBEEF",
  "_rev": "2-FEEDME",
  "name": "Jimmy Strawson",
  "link": "placeholder.txt",
  "entries": {
    "Foo": 0
  }
}

使用$ .getJSON调用将其读入我的javascript。

所以我有JS对象“回复”,它包含所有这些数据。

我需要附加项目,以便“条目”扩展如下:

{
  "_id": "DEADBEEF",
  "_rev": "2-FEEDME",
  "name": "Jimmy Strawson",
  "link": "placeholder.txt",
  "entries": {
    "Foo": 0,
    "Bar": 30,
    "Baz": 4
  }
}

我试过了

reply['entries'].push({"Bar": 0});

但这不起作用(我认为因为什么都不是数组)

有人可以提供替代方法吗?

6 个答案:

答案 0 :(得分:5)

使用 ES2017 ,您可以使用:



curl -v -u user:password http://teamcity.server.url:8111/app/rest/buildQueue --request POST --header "Content-Type:application/xml" --data-binary @build.xml




注意:这将改变原始输入对象,而是返回一个新的(通常是一件好事)。

答案 1 :(得分:4)

这里还有一个,因为为什么不〜见Object.assign



let reply = {"_id":"DEADBEEF","_rev":"2-FEEDME","name":"Jimmy Strawson","link":"placeholder.txt","entries":{"Foo":0}};

Object.assign(reply.entries, {
    Bar: 30,
    Baz: 4,
    'Bar Baz': 0
});

console.log('reply =', reply);




答案 2 :(得分:3)

reply['entries'].push({"Bar": 0})不起作用,因为entries不属于Array类型,只是普通Object

使用reply['entries']["Bar"]reply.entries.Bar。见下面的演示:



var reply = {
  "_id": "DEADBEEF",
  "_rev": "2-FEEDME",
  "name": "Jimmy Strawson",
  "link": "placeholder.txt",
  "entries": {
    "Foo": 0,
    "Bar": 30,
    "Baz": 4
  }
}
reply['entries']["Bar"] = 0;

console.log(reply);




答案 3 :(得分:2)

它成为一个对象,所以只需添加你想要的东西: -

reply.entries.Foo = 0
reply.entries.Bar = 30
reply.entries.Baz = 4

reply["entries"]["Foo"] = 0

reply.entries["Foo"] = 0

答案 4 :(得分:1)

为了在 JSON 对象中插入新条目,您可以尝试以下方法:

object["someproperty"] = somevalue;object.someproperty = somevalue;

假设您已获得变量somepropertysomevalue中的键和值,您只需将它们插入:

reply.entries[someproperty] = somevalue

答案 5 :(得分:1)

以下是替代方法:

reply = {
          "_id": "DEADBEEF",
          "_rev": "2-FEEDME",
          "name": "Jimmy Strawson",
          "link": "placeholder.txt",
          "entries": {
            "Foo": 0
          }
        }
reply.entries.Bar=30;
reply.entries.Baz=4;
reply["entries"]["Bar"]=30;
reply["entries"]["Baz"]=4;