javascript - Comparing knockout observable array and removing any object with match id from the array -


1st observable array:

data = [{id:1 , name:'abc'},{id:2 ,name:'xyz'},{id:3 , name:'rst'}] 

another array:

dataprovider = [{id:3 , name:'pqr'} , {id:4 , name:'hjk'}] 

now can compare data array data provider , id = 3 should replace previous object , id = 4 push object data array.

therefore new data array this

data = [{id:1 , name:'abc'},{id:2 ,name:'xyz'} ,{id:3 , name:'pqr'} , {id:4 , name:'hjk'}]    

an alternative using $.each use knockout's own utility function ko.utils.arrayfilter achieve this. cached matchable ids in object don't have loop on entire dataprovider each data entry.

var matches = {},     = 0,     len = dataprovider.length,     filtereddata = [];  // transform data prevent looping on array n times n = data.length (; < len; i++) {     matches[dataprovider[i].id] = dataprovider[i]; }  filtereddata = ko.utils.arrayfilter(self.data(), function(item) {     return !(item.id in matches); // leave item out if in dataprovider });  self.data(filtereddata.concat(dataprovider)); // merge in of dataprovider results 

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -