当前位置:  开发笔记 > 编程语言 > 正文

附加到对象

如何解决《附加到对象》经验,为你挑选了5个好方法。

我有一个对象,它包含警报和一些有关它们的信息:

var alerts = { 
    1: { app: 'helloworld', message: 'message' },
    2: { app: 'helloagain', message: 'another message' }
}

除此之外,我还有一个变量,说明有多少警报alertNo.我的问题是,当我去添加新警报时,有没有办法将警报附加到alerts对象上?



1> Andreas Grec..:

如何将警报存储为数组中的记录而不是单个对象的属性?

var alerts = [ 
    {num : 1, app:'helloworld',message:'message'},
    {num : 2, app:'helloagain',message:'another message'} 
]

然后添加一个,只需使用push:

alerts.push({num : 3, app:'helloagain_again',message:'yet another message'});



2> respectTheCo..:

jQuery $.extend(obj1, obj2)会为你合并2个对象,但你应该真正使用一个数组.

var alertsObj = {
    1: {app:'helloworld','message'},
    2: {app:'helloagain',message:'another message'}
};

var alertArr = [
    {app:'helloworld','message'},
    {app:'helloagain',message:'another message'}
];

var newAlert = {app:'new',message:'message'};

$.extend(alertsObj, newAlert);
alertArr.push(newAlert);



3> Thane Plumme..:

您可以使用Object.assign()执行此操作.有时候你真的需要一个数组,但是在处理期望单个JSON对象的函数时 - 比如OData调用 - 我发现这个方法比创建一个数组只是为了解压缩它更简单.

var alerts = { 
    1: {app:'helloworld',message:'message'},
    2: {app:'helloagain',message:'another message'}
}

alerts = Object.assign({3: {app:'helloagain_again',message:'yet another message'}}, alerts)

//Result:
console.log(alerts)
{ 
    1: {app:'helloworld',message:'message'},
    2: {app:'helloagain',message:'another message'}
    3: {app: "helloagain_again",message: "yet another message"}
} 


这实际上是正确的答案,因为其他人指的是将对象转换为数组,但这样您就将它保留为对象.在作者的情况下,可能他最好使用数组,但这将是如何附加到对象的答案.
是的,我同意..有问题的是,没有一个对象数组,而只是一个对象,所以这是一个完美的答案!

4> M.C..:

与其他指出的答案一样,您可能会发现使用数组更容易.

如果不:

var alerts = { 
    1: {app:'helloworld',message:'message'},
    2: {app:'helloagain',message:'another message'}
}

// Get the current size of the object
size = Object.keys(alerts).length

//add a new alert 
alerts[size + 1] = {app:'Your new app', message:'your new message'}

//Result:
console.log(alerts)
{ 
    1: {app:'helloworld',message:'message'},
    2: {app:'helloagain',message:'another message'}
    3: {app: "Another hello",message: "Another message"}
}      

试试吧:

https://jsbin.com/yogimo/edit?js,console



5> 小智..:

您可以按如下方式使用传播语法。

var alerts = { 
1: { app: 'helloworld', message: 'message' },
2: { app: 'helloagain', message: 'another message' }
 }

alerts = {...alerts, 3: {app: 'hey there', message: 'another message'} }

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有