• 简单谈谈$.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}
  • 相关阅读:
    [BZOJ2839:]集合计数
    [BZOJ2863:]愤怒的元首
    [BZOJ:3162]:独钓寒江雪
    PHP数据库基础(简单的)
    PHP数组创建和遍历(基础)
    中缀表达式转换为前、后缀表达式转化简单的技巧[转]
    PHP网页简单的计算机源代码
    JS确认取消按钮使用
    js(JavaScript)使用${pageContext.request.contextPath}报错
    易游验证怎么配置?易游验证怎么使用!!
  • 原文地址:https://www.cnblogs.com/wchjdnh/p/10763451.html
Copyright © 2020-2023  润新知