数组

59 阅读3分钟

数据类型之间存储的区别

存储空间分为两种 堆 和 栈

栈:主要存储基本数据类型的类容

堆:主要存储复杂数据类型的类容

图片.png

图片.png

数据类型之间的比较

基本数据类型是 值 之间的比较

复杂数据类型是 地址 之间的比较

var num = 100
var str = '100'
num == str      // true

var obj = {name:'jack', age:22}
var obj1 = {name:'jack', age:22}    
var obj2 = obj

obj == obj1     // false
obj == obj2     // true

函数参数的传递

//简单数据类型
   var num = 100
   function fun(m){
       m = 200
       console.log('m', m )  // 200
   }
   fun(m)
   console.log('m', m)  // 100
 
 //复杂数据类型
   var a = [2,3,4,1]
   function fun(a1){
       a1[0] = 'rose'
       console.log(a[0] )  // rose
   }
   fun(a)
   console.log(a[0])  // rose
   
   var obj = {name:'jack',age:22}
   var obj1 = {name:'jack',age:22}
   var obj2 = obj
   
   console.log(obj == obj1)  //false
   console.log(obj == obj2)  //true

图像.png

因为复杂数据类型,变量存储的是地址,真实类容在 堆空间 内存储,所以赋值时相当于把 obj 存储的那个地址赋值了一份给到 obj2 变量,现在 obj 和 obj2 两个变量的存储地址一样,指向同一个内存空间,所以使用 obj2 这个变量修改空间的内容时, obj 指向的空间也会跟着改变

数组的常用方法

  1. push是用来在数组的末尾追加一个元素 arr.push()
  2. pop是用来删除数组末尾的一个元素 arr.pop()
  3. unshift是在数组的最前面添加一个元素 arr.unshift()
  4. shift是删除数组最前面的一个元素 arr.shift()
  5. splice是截取数组中的某些类容,按照索引来截取 arr.splice(从哪一个索引位置开始,截取多少个元素,替换的新元素)
  6. reverse是用来反转数组使用的 arr.reverse()
  7. sort是用来给数组排序的 arr.sort()
  8. contat是把多个数组进行拼接 contat不会改变原数组,而是会返回一个新数组 var newArr = arr.contat(['','',''])
  9. join是把每个数组里面的每一项内容链接起来,变成一个字符串 不会改变原数组,而是把连接好的字符串返回 var str = arr.join(链接的内容)
  10. slice方法返回一个新的数组对象,这一对象是由 begin 和 end 确定的原数组的浅拷贝(包括begin,不包括end).原始数组不会改变
  11. indexOf方法用来找到数组中某一项的索引值
  12. includes 检测数组是否包含元素

数组的常用遍历方法

  • forEach

    匿名函数
       function(){}
           arr.forEach(functon(item,index)){
           item:第一个形参,数组元素
           index:第二个形参,索引号
       }
    

 - map

   遍历数组
   映射新数组
         var newArr = arr.map(function(item){
            return 表达式
         })

 - filter

    遍历数组
    过滤元素
       var newArr = arr.filter(function(item){
           return 条件
       })

  - find

     遍历数组
     查找到符合条件的第一个元素
        

 - every

     遍历数组
     判断数组中所有元素是否都满足条件,都满足返回true,有不满足返回false
  • some

     遍历数组
     判断数组中有没有元素满足条件,只有有一个满足就返回true,都不满足返回false