zoukankan      html  css  js  c++  java
  • 简单谈谈$.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}
  • 相关阅读:
    JavaScript之正则表达式
    BOM之本地数据存储
    BOM之定时器
    BOM之window核心模块
    BOM简介
    DOM之元素定位
    DOM之事件
    DOM之节点操作
    DOM简介
    linux机制
  • 原文地址:https://www.cnblogs.com/wchjdnh/p/10763451.html
Copyright © 2011-2022 走看看