简单谈谈$.merge()

var arr1 = [1,2,3];
var arr2 = [1,2,3];
console.log($.merge(arr1,arr2)) //[1,2,3,1,2,3],可见数组间只是合并,不会发生相同元素覆盖
var arr1 = [1,2,3];
var obj2 = {
'5' : 5,
length:6
};
console.log($.merge(arr1,obj2)) // 返回的是数组,length属性限制了obj2中数字属性的取舍,另外比如obj2的length为5,没必要'0','1'...'4'全部列出,只有一个'4'也是能参与合并的
//打印[1, 2, 3, undefined, undefined, undefined, undefined, undefined, 5],length是对象和数组的length和
obj = {
'0' : 1,
'1' : 1,
'2' : 1,
'3' : 1,
'4' : 1,
length : 2
}
console.log(obj) //打印的时候'0'-'4'的属性可以显示,但是,合并操作的时候只截取'0'、'1'去合并,这是length限制死了
var arr1 = [1,2,3];
var obj2 = {
'0' : '嗯嗯',
'1' : '哈哈',
'2' : '哦哦',
'3' : '嘿嘿',
length : 2
}
console.log($.merge(obj2,arr1)) //{0: "嗯嗯", 1: "哈哈", 2: 1, 3: 2, 4: 3, length: 5}

总结来说:$.merge(参数1,参数2) 返回参数1的类型,然后length是相加后的length,注意对象参与合并的属性名是数字字符串的,而且看对象的length长度决定

下面来说说没有length的情况:

var arr1 = [1,2,3];
var obj2 = {
'1' : '哈哈'
}
console.log($.merge(arr1,obj2)) //打印的[1,2,3],数组在前,后面的对象没有length直接返回第一个参数数组
var arr1 = [1,2,3];
var obj2 = {
'1' : '哈哈'
}
console.log($.merge(obj2,arr1)) //对象在前,没有length属性,数组合并不了但是会把数组的长度赋值到返回对象的NAN属性中,而且给返回对象添加了length属性值为NAN
{1: "哈哈", NaN: 3, length: NaN}
上一篇:python 连接操作数据库(一)


下一篇:Python连接操作数据库