2014-12-11 5 views
3

Fiddle Example.Объединение объектов в jQuery

$('#send').click(function(){ 
    var object = {}; 
    var chat = {}; 
    chat = {msg:$('#message').val()}; 
    var pic = $('.pic'); 
    object = pic.map(function(){ 
     var src = $(this).attr('src'), 
      tid = $(this).data('id'), 
      title = $(this).attr('title'); 
     return {src:src,tid:tid,title:title}  
     }).get(); 
    var newobj = $.extend(chat,object); 
     console.log(JSON.stringify(newobj)); 
}); 

код объединяет два объекта chat и object в одном объекте. Вот как это выглядит после JSON.stringify

{"0":{"src":"pic.jpg","tid":3,"title":"logo"}, 
    "1":{"src":"pic2.jpg","tid":3,"title":"logo2"}, 
    "msg":"dfdfdf" 
} 

Можно ли объединить объекты в этом:

{ 
    "0":{"msg":"dfdfdf"}, 
    "1":{"src":"pic.jpg","tid":3,"title":"logo"}, 
    "2":{"src":"pic2.jpg","tid":3,"title":"logo2"} 
} 

Я попытался chat[0] = {msg:$('#message').val()}; и map функцию, но она даже не объединить chat объект в объект object.

HTML:

<div class="area"> 
    <button>Choose Picture</button> 
</div> 

+9

Почему бы не использовать массив вместо объекта? '{'0': {msg}}' -> '[{msg}]'? – Evgeniy

+0

'object.unshift (chat);' http://jsfiddle.net/yee4b1uu/28/ ??? –

ответ

3

Вы можете удалить и повторно вставить его

var newobj = $.extend(chat,object); 
delete newobj.msg; // delete the property 
newobj["0"] = chat; // add the property 
console.log(JSON.stringify(newobj)); 

И так как вы используете номера в качестве имен свойств или идентификаторов, было бы лучше, если подходит это был Array вместо Object.

Смежные вопросы