我有一个对象,它包含警报和一些有关它们的信息:
var alerts = { 1: { app: 'helloworld', message: 'message' }, 2: { app: 'helloagain', message: 'another message' } }
除此之外,我还有一个变量,说明有多少警报alertNo
.我的问题是,当我去添加新警报时,有没有办法将警报附加到alerts
对象上?
如何将警报存储为数组中的记录而不是单个对象的属性?
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'});
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);
您可以使用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"} }
与其他指出的答案一样,您可能会发现使用数组更容易.
如果不:
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
您可以按如下方式使用传播语法。
var alerts = { 1: { app: 'helloworld', message: 'message' }, 2: { app: 'helloagain', message: 'another message' } } alerts = {...alerts, 3: {app: 'hey there', message: 'another message'} }