简单谈谈$.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}

转载于:https://www.cnblogs.com/wchjdnh/p/10763451.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值