追加到一个对象
我有一个对象,持有警报和一些关于他们的信息:
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"});