JavaScript数组理解

本文详细介绍了JavaScript中数组的创建方式(字面量、构造函数和let/const声明),以及各种操作数组的方法如push、pop、sort、splice等,强调了排序函数的使用注意事项和splice的删除、添加、替换功能。
摘要由CSDN通过智能技术生成

一、创建数组的方法

1、数组字面量

	//字面量
	var arr1 = []; //创建一个空数组
	var arr2 = [1,2,3];  //创建一个包含三个元素的数组

2、使用new关键字构造函数创建数组

	//使用new关键字构造函数创建数组
	var arr3 = new Array(); // 创建一个空数组
	var arr4 = new Array(1, 2, 3); // 创建一个包含三个元素的数组
	var arr5 = new Array('apple', 'banana', 'orange'); // 创建一个包含字符串元素的数组
	var arr6 = new Array(5); //创建一个长度为5的数组

3、新建数组的声明方式(关键字)

var:可以随时被修改或重新分配,ES6发布前用

let:声明一个块作用域的变量,let可以被赋值,不能重复声明

const:const声明常量,表示该变量引用的数组不能被重新赋值,但数组本身可变

let和const是ES6新发布的

	//新建数组
	var arr2 = [1,2,3];  //创建一个包含三个元素的数组
	const a1=[1,2,3]  //const声明常量,表示该变量引用的数组不能被重新赋值,但数组本身可变
	const arr = Object.freeze([1, 2, 3]);//可以利用Object.freeze方法,将数组冻结,使其不能被修改
	let a2=[1,2,3] //let声明变量,声明一个块作用域的变量,let可以被赋值,不能重复声明
	

分清声明变量和赋值的区别

a2=[3,4,4]    //这叫赋值

var arr1 = [1,2,3];   //这叫声明

 二、操作数组的方法

push()、pop()、sort()、splice()、unshift()、shift、reverse()、concat()、join()、map()、filter()、ervery()、some()、reduce()、isArray()、findIndex()

哪些方法会改变数组?

push()、unshift()、pop()、shift、sort()、splice()、reverse()

1、push()/unshift()添加

push():在数组的末尾添加一个或多个元素,并返回新的长度。

	const arr = [1, 2, 3];
	arr.push(4,5,6); //结果arr=[1,2,3,4,5,6]
	console.log(arr);

 unshift():向数组的开头添加一个或多个元素,并返回新的长度。

	const arr = [1, 2, 3];
	arr.unshift(5,6);
	console.log(arr);//结果arr=[,5,6,1,2,3,4]

2、pop()/shift() 删除

pop()删除数组末尾的元素,并返回该元素的值。

	const arr = [1, 2, 3];
	console.log(arr.pop()); //结果arr=[1,2]

 shift()删除数组第一个元素,并返回该元素的值。

	const arr = [1, 2, 3];
	arr.shift();
	console.log(arr); //结果arr=[2,3]

3、sort

sort():按升序排列数组项——即最小的值位于最前面,最大的值排在最后面

重点:

sort比较的是字符串,即使数组里是数值,比较的也是字符串,会发生错误

sort会改变原数组,谨慎使用

    const arr = [9,5,11,13,1,34];
	console.log(arr.sort()); //结果 [1, 11, 13, 34, 5, 9] 是错误的,没有升序
	const arr1 = ['a',"b","e","d","p","c"];
	console.log(arr1.sort());  //结果['a', 'b', 'c', 'd', 'e', 'p'] 正确

为了解决上述问题,sort()方法可以接收一个比较函数作为参数,指定哪个值位于哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。

	const arr = [9,5,11,13,1,34];
	function px(a1,a2){
		return a1-a2;
	}
	console.log(arr.sort(px)); //结果[1, 5, 9, 11, 13, 34]

4、 splice()删除 / 添加 / 替换

    //删除
    数组名.splice(从第几位开始,删除长度);
    
    //新增
    数组名.splice(从第几位开始,删除长度为0,要添加的元素);   //可以添加一个值,也可以添加多个值

    //替换
    数组名.splice(从第几位开始,删除长度,要添加的元素);

//删除    数组名.splice(从第几位开始,删除长度);
	const arr = [1,2,3,4,5,6];
	arr.splice(1,2)
	console.log(arr); //结果[1,4,5,6]

//新增   数组名.splice(从第几位开始,删除长度为0,要添加的元素); 
    const arr = [1,2,3,4,5,6];
	arr.splice(1,0,8,9,10)
	console.log(arr); //结果[1, 8, 9, 10, 2, 3, 4, 5, 6]

// 替换  数组名.splice(索引,删除长度,要添加的元素);
	const arr = [1,2,3,4,5,6];
	arr.splice(1,2,8,9,10)
	console.log(arr); //结果 [1, 8, 9, 10, 4, 5, 6]


5、reverse()反转数组项的顺序

	const arr =[8,3,5,7,2]
	console.log(arr.reverse());//结果 [2, 7, 5, 3, 8]

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安风\(`Δ’)/

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值