追加到一个对象

我有一个对象,持有警报和一些关于他们的信息:

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

除此之外,我有一个variables,说有多less警报, alertNo 。 我的问题是,当我去添加一个新的警报,有没有办法将警报追加到alerts对象?

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

 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); 

你应该真的与警报的build议arrays,但否则添加到你提到的对象看起来像这样:

 alerts[3]={"app":"goodbyeworld","message":"cya"}; 

但既然你不应该使用字面数字作为名字引用一切,并随之而去

 alerts['3']={"app":"goodbyeworld","message":"cya"}; 

或者你可以使它成为一个对象数组。

访问它看起来像

 alerts['1'].app => "helloworld" 

你有能力把最外层的结构改成数组吗? 所以它看起来像这样

 var alerts = [{"app":"helloworld","message":null},{"app":"helloagain","message":"another message"}]; 

所以当你需要添加一个,你可以把它推到数组上

 alerts.push( {"app":"goodbyeworld","message":"cya"} ); 

然后你有一个内置的从零开始的错误枚举索引。

尝试这个:

 alerts.splice(0,0,{"app":"goodbyeworld","message":"cya"}); 

工作得很好,它会将它添加到数组的开始。

 alerts.unshift({"app":"goodbyeworld","message":"cya"});