I want to sort 3 dimensional array in javascript -
i post question php want javascript
my array following :
var inboxmessages = { 105775: { //index thread_id 0: { 'id': 85, 'thread_id': 105775, 'message': "hello", 'created_at': "may 20, 2015", 'datetime': 1432118191, 'sender_id': 13, }, 1: { 'id': 70, 'thread_id': 105775, 'message': "hii", 'created_at': "may 19, 2015", 'datetime': 1432021227, 'sender_id': 13, } }, 224199: { //index thread_id 0: { 'id': 88, 'thread_id': 224199, 'message': "yessss...", 'created_at': "may 20, 2015", 'datetime': 1432306513, 'sender_id': 14, }, 1: { 'id': 75, 'thread_id': 224199, 'message': "hellowwww...", 'created_at': "may 19, 2015", 'datetime': 1432021227, 'sender_id': 14, } }, 107917: { //index thread_id 0: { 'id': 56, 'thread_id': 107917, 'message': "how r u??", 'created_at': "may 16, 2015", 'datetime': 1431792155, 'sender_id': 14, }, 1: { 'id': 30, 'thread_id': 107917, 'message': "hi.. m fine.", 'created_at': "may 6, 2015", 'datetime': 1430920006, 'sender_id': 14, }, 2: { 'id': 30, 'thread_id': 107917, 'message': "hi!!!!..how r u??", 'created_at': "may 6, 2015", 'datetime': 1430920006, 'sender_id': 14, } }, 378552: { //index thread_id 0: { 'id': 108, 'thread_id': 378552, 'message': "hi", 'created_at': "may 29, 2015", 'datetime': 1432906923, 'sender_id': 14, }, 1: { 'id': 107, 'thread_id': 378552, 'message': "hi.", 'created_at': "may 29, 2015", 'datetime': 1432903194, 'sender_id': 14, } } };
so need output :
var inboxmessages = { 378552: {//index thread_id 0: { 'id': 108, 'thread_id': 378552, 'message': "hi", 'created_at': "may 29, 2015", 'datetime': 1432906923, 'sender_id': 14, }, 1: { 'id': 107, 'thread_id': 378552, 'message': "hi.", 'created_at': "may 29, 2015", 'datetime': 1432903194, 'sender_id': 14, } }, 224199: {//index thread_id 0: { 'id': 88, 'thread_id': 224199, 'message': "yessss...", 'created_at': "may 20, 2015", 'datetime': 1432306513, 'sender_id': 14, }, 1: {//index thread_id 'id': 75, 'thread_id': 224199, 'message': "hellowwww...", 'created_at': "may 19, 2015", 'datetime': 1432021227, 'sender_id': 14, } }, 105775: {//index thread_id 0: { 'id': 85, 'thread_id': 105775, 'message': "hello", 'created_at': "may 20, 2015", 'datetime': 1432118191, 'sender_id': 13, }, 1: { 'id': 70, 'thread_id': 105775, 'message': "hii", 'created_at': "may 19, 2015", 'datetime': 1432021227, 'sender_id': 13, } }, 107917: {//index thread_id 0: { 'id': 56, 'thread_id': 107917, 'message': "how r u??", 'created_at': "may 16, 2015", 'datetime': 1431792155, 'sender_id': 14, }, 1: { 'id': 30, 'thread_id': 107917, 'message': "hi.. m fine.", 'created_at': "may 6, 2015", 'datetime': 1430920006, 'sender_id': 14, }, 2: { 'id': 30, 'thread_id': 107917, 'message': "hi!!!!..how r u??", 'created_at': "may 6, 2015", 'datetime': 1430920006, 'sender_id': 14, } }, };
i don't know how sort in js.
i need recent datetime
of thread's array top on array
does want?
//var inboxmessages = {... input ...}; function converttoorderedarrays(inboxmessages) { var output = []; var thread_ids = object.keys(inboxmessages); var threadobject, threadarray, keys; (var ii=0, thread_id; thread_id=thread_ids[ii]; ii++) { threadobject = inboxmessages[thread_id]; keys = object.keys(threadobject); threadarray = []; output.push(threadarray); (var jj=0, key; key=keys[jj]; jj++) { threadarray.push(threadobject[key]); } threadarray.sort(function (a, b) { return (b.datetime - a.datetime); }); } output.sort(function (a, b) { return(b[0].datetime - a[0].datetime); }); return output; } function getthreadidarray(threadarrays) { var thread_id_array = []; (var ii=0, thread_array; thread_array=threadarrays[ii]; ii++) { thread_id = thread_array[0].thread_id; thread_id_array.push(thread_id); } return thread_id_array; } function findthreadarray(thread_id, thread_id_array, threadarrays) { var index = thread_id_array.indexof(thread_id); var threadarray; if (index < 0) { // no matching thread found } else { threadarray = threadarrays[index]; } return threadarray; } var output = converttoorderedarrays(inboxmessages); var thread_id_array = getthreadidarray(output); var mostrecentthread = thread_id_array[0]; var mostrecentmessage = output[0][0]; var thread105775 = findthreadarray(105775, thread_id_array, output); console.log(output); // sorted array of sorted arrays console.log(thread_id_array); // [378552, 224199, 105775, 107917] console.log(mostrecentthread); // 378552 console.log(mostrecentmessage); /* { created_at: "may 29, 2015" , datetime: 1432906923 , id: 108 , message: "hi" , sender_id: 14 , thread_id: 378552 } */ console.log(thread105775); // sorted array
Comments
Post a Comment