如何更新,将对象推送到对象?

时间:2017-10-24 12:32:05

标签: javascript javascript-objects

这个问题可能已经被问到,但我在理解它时遇到了一些麻烦,我想用新对象更新我的javascript对象。

对象1:

var cjson = {};

var t = {
    "infos": "apple",
    "fields": {
        "color":"red",
    }
}

cjson['g320fld1'] = t;

对象2:

var data {
  "fruits": {},
  "vegetables": {}
}

输出:我想将对象1推送到 fruits 键下的对象2。所以输出的外观:

{
  "fruits": {
    "g320fld1": {
      "infos": "apple",
      "fields": {
      "color":"red",
    }
  },
  "vegetables": {}
}

我尝试了什么:

推()

data['fruits'].push(cjson);
  

错误:... push()不是函数。 (我知道push()仅适用于数组,所以它不会在这里工作。)

更新()

data['fruits'].update(cjson);
  

错误:... update()不是函数。 (这个给出了同样的错误,但因为它的另一个字典不应该按预期工作吗?)

我该如何解决这个问题?

更新:

抱歉,我并不精确,我不想删除水果中的旧数据。

2 个答案:

答案 0 :(得分:3)

您只需将密钥t直接分配给数据对象即可。只要您的密钥(例如g320fld1)不同,就不会覆盖任何密钥。我认为这对你想做的事情更有意义。



var t = {
    "infos": "apple",
    "fields": {
        "color":"red",
    }
}

var data  = {
  "fruits": {},
  "vegetables": {}
}

data.fruits['g320fld1'] = t;

console.log(data);




答案 1 :(得分:2)

修改

您可以使用Object.assign(srcObject,newProperties)将新propertiesvalues附加到现有object

var cjson = {};

var t = {
    "infos": "apple",
    "fields": {
        "color":"red"
    }
}

cjson['g320fld1'] = t;

var data ={
  "fruits": {
    otherProperty:"bar"
  },
  "vegetables": {}
}

Object.assign(data.fruits,cjson);

console.log(data)