2013-05-13 16 views
0

如何在某些情況下使用$.extend

obj=[{..}, {..}, {....}]; 

this.model.axes=[{..}, {..}, {...}]; 

$.extend(true, this.model.axes, obj); 

obj是JSON對象和相同的this.model.axes陣列。我想將obj的值擴展或合併到model.axes,但跳過前兩個索引。這意味着不需要將值與this.model.axes[0]this.model.axes[1]obj[0]obj[1]合併。

我想合併obj[0]this.model.axes[2]obj[1]this.model.axes[3]那樣。

如何從model.axes跳過前兩個json對象?

感謝,

溼婆

回答

1

如果你想要的是來串聯obj陣列this.model.axesthis.model.axes前兩個元素,下面會爲你:

this.model.axes = this.model.axes.slice(2).concat(obj); 

Demo

如果你想要的是取代的值與obj開始在this.model.axes第三個元素的值,然後使用以下命令:

this.model.axes = this.model.axes.slice(0, 2).concat(obj); 

Demo

最後,如果你想要的是延長開始與陣列中的對象的this.model.axes第三個要素,並繼續直到obj最後一個元素,那麼你想要的以下內容:

for (var i = 0; i < obj.length; i += 1) { 
    if (obj[i]) { 
     $.extend(true, this.model.axes[i + 2], obj[i]); 
    } 
} 

Demo

+0

如果obj是否會在model.axes合併任何新的JSON對象? – SivaRajini 2013-05-13 09:12:18

+0

我想只是將obj合併到this.model.axes,但是從2索引開始(this.model.axes [2]) – SivaRajini 2013-05-13 09:13:01

+0

您是否想要將'this.model.axes [2]'的舊值替換爲一個新的值,'obj [0]',等等? – 2013-05-13 09:14:41

1
var arr = [{id: 1},{id:2},{id:3}]; 
var arr2 = [{name: "joe"},{name:"john"},{name:"jack"},{name:"Jill"}]; 


function myMerge(arr1, arr2, start){ 
    var trimmed = arr2.slice(start); 
    for(var i = 0; i < trimmed.length; i++){ 
     $.extend(true, trimmed[i], (arr[i])? arr[i]:{}); 
    } 
    return [].concat(arr2.splice(0,start), trimmed); 
} 

console.log(myMerge(arr,arr2, 2)); 
//Outputs: [Object { name="joe"}, Object { name="john"}, Object { name="jack", id=1}, Object { name="Jill", id=2}] 

工作實例http://jsfiddle.net/pf7yL/1/