0

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

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

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

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

obj是 json 对象和相同的数组this.model.axes。我想扩展或合并值 from objtomodel.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]

如何跳过前两个 json 对象model.axes

谢谢,

湿婆

4

2 回答 2

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/

于 2013-05-13T09:16:36.497 回答
1

如果您想要将obj数组连接到this.model.axes没有 的前两个元素的情况下this.model.axes,则以下内容会为您完成:

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

演示

如果您想要将 的值替换为从 的第三个元素开始this.model.axes的值,则使用以下命令:objthis.model.axes

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

演示

最后,如果您想要扩展数组中的对象,从 的第三个元素开始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]);
    }
}

演示

于 2013-05-13T09:10:38.443 回答