关于数组的一些理解

1.什么是数组

内存中连续存储多个数据的存储空间,再起一个名字。

2.创建数组

1.创建空数组
如果创建数组时,暂时不知道数组的内容。

var arr1 = [];
var arr2 = new Array();
console.log(arr1);  //[]
console.log(arr2);  //[]

2.创建数组同事初始化数组元素
如果创建数组时,已经知道数组的内容。

var arr1 = [1,2,3,4];
var arr2 = new Array(1,2,3,4);
console.log(arr1);  //[1,2,3,4]
console.log(arr2);  //[1,2,3,4]

3.创建n个元素的空数组
如果创建数组时,只知道数组的长度,不知道数组的内容。

var arr = new Array(5);
console.log(arr.length)  //5

3.访问数组

根据下标来访问,从0到length-1

var arr = [1,2,3];
console.log(arr[0],arr[1],arr[2]);  //   1,2,3
console.log(arr[3])  //如果超过了数组的下标  输出undefined
//如果直接赋值
arr[3] = 4;
console.log(arr);  //[1,2,3,4]
//则会自动将原数组长度+1  

4.数组属性

1.arr.length始终等于最大下标+1

var arr = [1,2,3];
console.log(arr.length); //3
console.log(arr[length-1])//获取最后一个元素  3
console.log(arr[length-n])//获取倒数第n个元素  
arr.length = 4  //末尾追加一个新元素4
arr.length--   //删除末尾第一个元素
arr.length-= n     //删除末尾第n个元素
arr.length = 0     //清空数组

5.数组方法

1.arr.push() 在数组末尾添加一个或多个元素,返回数组的长度

var arr = [1,2];
arr.push(3);//**改变原数组** 末尾添加3
console.log(arr);//[1,2,3]
console.log(arr.push(4,5)) //末尾添加4,5  返回数组的长度  5

2.arr.pop() 在数组末尾删除一个元素,返回删除的元素

var arr = [1,2,3];
arr.pop();//**改变原数组**  删除3
console.log(arr);//[1,2]
console.log(arr.pop()) //  删除2  返回数组的长度  1

3.arr.unshift() 在数组开头添加一个或多个元素,返回数组的长度

var arr = [1,2];
arr.unshift(3);//**改变原数组** 开头添加3
console.log(arr);//[3,1,2]
console.log(arr.unshift(4,5)) //开头添加4,5  返回数组的长度  5

4.arr.shift() 在数组开头删除一个元素,返回删除的元素

var arr = [1,2,3];
arr.shift();//**改变原数组** 删除1
console.log(arr);//[2,3]
console.log(arr.shift()) //删除2  返回删除的元素  2

5.arr.concat() 拼接数组,返回新的数组

var arr = [1,2,3];
arr.concat([4,5]);//**不改变原数组** [1,2,3,4,5]
arr.concat([1,2],[3]) //  [1,2,3,1,2,3]
arr.concat();//**浅拷贝数组**

5.arr.join(“连接符”) 每个元素转为字符串,自定义连接符(默认逗号连接),返回字符串

var arr = [1,2,3];
arr.join("");//     "123"
arr.join("+")  //   "1+2+3"
arr.join("")==="" //判断是否是空数组

6.arr.slice(start,end+1) 选取下标从start到end位置的元素,返回新数组

var arr = [1,2,3];
var arr1 = arr.slice(1,2);//   含头不含尾  2	
var arr2 = arr.slice(-2,-1);//    2
//省略第二个参数  从start选取到结尾
var arr3 = arr.slice(1)  //  [2,3]
//省略全部参数  复制数组
var arr4 = arr.slice()  
//用途  将类数组对象转化为数组对象
Array.prototype.slice.call(arguments)
//相当于
arguments.slice()

7.arr.splice(start,n,值1,值2) 从start位置删除n个元素,然后将删除的元素替换为值1,值2 强调:直接修改原数组

var arr = [1,2,3,4,5,6];
//删除
arr.splice(1,2);//直接删除2,3   返回被删除的元素   [2,3]
//arr  [1,4,5,6]
//插入
arr.splice(1,0,2,3) //从1位置开始插入两个元素  返回被删除的元素  没有则为[]
//arr  [1,2,3,4,5,6]
//替换
arr.splice(1,2,6,6)//从1位置开始替换元素  返回被删除的[2,3]
//arr  [1,6,6,4,5,6]
//固定套路---广告轮播
//移除开头的n元素拼接到结尾
imgs=imgs.concat(imgs.splice(0,n))
//移除结尾的n个元素拼接到开头
imgs=imgs.splice(-n).concat(imgs)

8.arr.reverse() 翻转数组

var arr = [1,2,3,4,5];
arr.reverse();  //改变原数组
//arr  [5,4,3,2,1]

9.arr.sort() 数组排序

var arr = [7,2,1,6,5];
arr.sort();  //改变原数组
//缺点  只能按照字符串升序排列
//数字会先被转成字符串  然后在根据字符串排列规则排列
//解决办法
arr.sort(function(a,b){return a-b})
//等同于
arr.sort((a,b)=>a-b)  //升序
arr.sort((a,b)=>b-a)  //降序

JS中没有专门的栈和队列的模型,都是用普通数组模拟的
栈:一端封闭只能从另一端进出的数组 pop、 push、 unshift、 shift
队列:只能从结尾进入开头出

9.arr.indexOf(item)
arr.lastIndexOf(item)
从开头查找item第一次出现的索引,若存在,返回索引,不存在,返回-1

var arr = [1,2,3,1,5];
arr.indexOf(1) //返回下标0
arr.indexOf(7) //找不到  返回-1
arr.lastIndexOf(1) //返回下标3

9.arr.find() 找出满足条件的第一个值
arr.findIndex() 找出满足条件的第一个值的索引

var arr = [1,2,3,1,5];
arr.find( a => a > 2)  //返回3
arr.findIndex( a => a > 2)//返回索引2

10.arr.forEach(callback) 对每个元素调用一次函数

var arr = [1,2,3,1,5];
arr.forEach( function(value,index,arr) {
	console.log(value)  1  2  3  1  5
	console.log(index)  0  1  2  3  4
	console.log(arr)    [1,2,3,1,5]
} )  

11.arr.filter() 筛选满足条件的元素 不改变原数组

var arr = [1,2,3,1,5,9,10];
arr.filter( item => item>5 )  //返回[9,10]

12.Array.isArray() 判断是否是数组

var arr = [1,2,3,1,5,9,10];
Array.isArray(arr)  //true

13.arr.reduce()

var arr = [10,11,12,13,14]
arr.reduce((per , cur , index , arr)=>{
	  /*per => previousValue  => 上一次调用回调返回的值,或者是提供的初始值
		cur  =>  currentValue => 数组中当前被处理的元素
		index =>  index       => 当前元素在数组中的索引值
		arr => arr            => 调用的原数组*/
	console.log(per , cur , index , arr) 
	return per + cur  //如果不加return  per会出现4次undefined  
})

14.arr.map()

var arr = [1,2,3,4,5]
var newArr = arr.map( item => item*item )
//[1,4,,9,16,25]

稍微整理一下,以后多写博客。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值