JS-数组

1、数组的定义:数组是在堆区存储,通过栈区变量间接访问的一段连续存储空间。

  • 1、所有的变量在栈区开辟空间,存放基本类型数据
  • 2、所有的object数据,都在堆区开辟空间,将其堆区的地址存在栈区的变量容器中
 var arr = new Array();  //创建了一个空数组
 var arr = new Array(5); //创建指定长度的数组
 var arr = [1,2,3,"娜娜","小林"]; //语法糖、字面量  

2、数组变量之间的赋值,属于引用赋值,不会创建新的数组

 var arr = [1,3,4,5];
 //数据的数据类型
 console.log(typeof arr);   //object
 //引用类型数据的判断 
 console.log(arr instanceof Array)  //true

3、数组元素的访问数组变量名[偏移量] 偏移量==下标

 var arr = [1,3,4,5];
 // 下标总是从 0开始
 console.log(arr[0]);  // 1 读取

 // 下标结束:数组长度 - 1访问数组长度
 console.log(arr.length);
 // 数组最后一位元素
 console.log(arr[arr.length - 1]);

4、 JS数组越界读取,会返回undefined。越界写入,会扩大数据长度。

 //修改arr.length属性,可以修改数组长度
 var arr = [1,3,4,5,8];
 console.log(arr[arr.length])  //undefined

5、 JS数组元素的数据类型,可以是任意类型,但是:一般开发过程中,数组中推荐只放同一类型的数据。

6、 数组数据处理的最基本方式,就是通过for循环一一遍历,然后通过arr[i]表达式,完成对数据的处理。

 // 定义一个数组  最大值,定义一个第三方变量  
 var arr = [1, 3, 10, 4, 7, 8];
 // 设置一个最大值的初始
 //初始化成数组的第一个元素,遍历比较赋值
 var max = arr[0]; 
 for (var i = 1; i < arr.length; i++) {
 // 拿最大值进行遍历+比较
	 max = max > arr[i] ? max : arr[i];
  }
  console.log(max);  //10


  //定义有一个数组,找出相同的
  var arr = [1, 2, 2, 3, 2, 3, 4, 5, 3, 10, 6, 6];
  for(i = 0; i < arr.length; i++){
     //获取当前要比较数
     var now = arr[i];
     //  切割该数据之后的数组
     var newArr = arr.slice(i + 1, arr.length);
     // 判断当前值是否在后面的数组中
     if(newArr.includes(now)){
         console.log(now)
     }
 }   

7、系统提供的数组操作方法 增


var arr = [1,2,3]
//数组末尾追加,返回追加后的数组长度
var length = arr.push("嘿嘿");  // [1,2,3,"嘿嘿"]

//数组首位追加 , 返回追加后的数组长度
var length = arr.unshift("啦啦");  // ["啦啦",1,2,3,"嘿嘿"]

//数组任意位置追加一个或多个 arr.splice
// 返回值是一个数组
var resArr = arr.splice(1,0,"略略","哈哈");   
//返回一个数组 ["啦啦","略略","哈哈",1,2,3,"嘿嘿"]

8、系统提供的数组操作方法 删

var arr = [1,2,3]
//从数组末尾删除 pop 一个   
var res = arr.pop();   //返回删除的数组元素

//从数组首位删除 shift 一个   
var res = arr.shift();   //返回删除的数组元素
  
//任意位置删除   splice(下标,删除个数)
var res = arr.splice(1,1,"咧咧")    // 返回一个数组,包含被删除的元素。

9、系统提供的数组操作方法 改

//切割数组,获取子数组,不会修改原数组 slice(起始下标,结束下标)
// 返回 起始下标,结束下标 — 1 的新数组。
var arr = [1,2,3,4,5,6]
var arr1 = arr;
var res = arr.slice();
    arr1[0] = "啦啦";
    console.log("arr",arr);    
console.log("res",res);


//数组拼接
var arr = [1,3,4]
var newArr = arr.concat( [2,3,4] );

// 深拷贝
var NewArr = [].concat(newArr);
console.log(NewArr)

// 数组内容反向 [1,3,4] -- [4,3,1]  反转
var arr = [1,3,5,7,8]
var res = arr.reverse();  //res就是原数组
console.log(arr,res);

// 4、数组转字符串
var arr = ["XADD","DSES","DGAW","QDX2"];
var sRes = arr.join("-")
console.log(sRes)

10、系统提供的数组操作方法 查

var arr = [1,3,4,5,8];
//查询数组中是否包含一个指定元素如果包含就返回 true ,如果不包含就返回 false
console.log(arr, arr.includes(20));  //false
arr.push(20);
console.log(arr, arr.includes(20)); //true

//返回指定元素在数组中的下标,如果不存在返回-1
var arr = [2,3,4,5,7]
console.log(arr.indexOf(2));  //0
console.log(arr.indexOf("嘿嘿"));  //-1
console.log(arr.indexOf("啦啦"));  //-1
posted @ 2022-06-13 19:35  熊二Ei  阅读(310)  评论(0)    收藏  举报