js数组 (es5 es6)

js数组的长度可以动态改变,不需要指定分配内存空间的长度。

1. 新建数组的方式:
一: new Array形式。
1.)  var a = new Array(args)
 	如果args是数字,那么指定的是长度。
 		new Array(1) ;  ====> 数组长度为1 ,值默认为undefined
 	如果args是其他,则作为元素,
 		new Array('red','blue') ;====》['red' , 'blue']

二: 字面量形式
	var a  = ['a', 'b', 'c']
2.数组的属性:
1.) length属性:数组的长度
	var  a = [1,2,3,4]
	console.log(a.length) ; ====> 4
	a.length = n ; ====>此时只保留数组前n位,或者数组长度不足n位,则扩充至n位,默认undefined
3.判断一个是否是数组
var a = [];
1.) 使用 instanceof :
	a  instanceof Array ; ====> true
2.) Array.isArray:
	Array.isArray( a ) ;  true
3.)通用的判断数据类型方式:
Object.prototype.toString.call(a);===>"[object Array]"
4. 数组转换
对象都具有toString() , valueOf() ,toLocalString()方法,
数组也有
1.) toString将数组变成字符串,使用逗号拼接。
	var a = [1, 2, 3]
	a.toString() ;  "1,2,3" ;变成了字符串。
2.)valueOf 不变。
3.) toLocalString针对的是数组中的项。

4.) join拼接:默认使用逗号拼接。还可以扁平化数组。
	var  a = [1,2,3];
	a.join('') ; '123' ;join单引号不带参数即,直接相连
	a.join(','); '1,2,3' ;使用逗号拼接。等同 a.join()

	b = [1,2,3,[4,5]] 
	b.join() ; "1,2,3,4,5"
	
5.栈和队列方法:
1.) push: 末尾添加
	a.push('1');
	a.push('2', ‘3’);
2.) pop: 末尾删除
	a.pop();删除最后一位
3.)shift: 第一项删除
	a.shift()
4.) unshift(): 从最前面添加
	a.unshift(3)
	a.unshift(4,5)
6. 排序
1.) 数组反转:reverse
	a = [1,2,3]
	a.reverse(); [3,2,1]
2.) 排序sort, 默认按照字符串值大小排序
	a = [1,2,10,3,30,4]
	a.sort() ; [1,10,2,3,30,4]
	
	自定义排序规则:
		function cmp(value1,value2) {
		  if(value1>value2) {
		    return 1
		  } else if(value1<value2){
		    return -1
		  } else {
		    return 0
		  }
		}  ; ===》 更简: function cmp(v1,v2) { return v1-v2 }
		var a = [1,2,10,4]
		console.log(a.sort()) ;//[ 1, 10, 2, 4 ]
		console.log(a.sort(cmp)); //[ 1, 2, 4, 10 ]
7. 拷贝和删除
1.) concat: 不修改原数组
	var a = [1,2,3]
	var b = a.concat(4,[5,6])
	a; ===> [1, 2, 3]
	b;===> [1, 2, 3, 4, 5, 6]
	a.concat() ; 复制全部。
2.) slice(arg1, arg2):方法返回起始和结束位置之间的项— —但不包括结束位置的项
	var a = [1,2,3];
	a.slice(1) ; [2, 3] 即从a[1] 开始复制到数组末尾
	var b = ['a','b','c','d'] ;
	b.slice(2,3) ; ["c"] 不包括 b[3]
	如果slice方法的参数中有一个负数,则用length的值和它相加。
	如length为5,slice(-2,-1)和slice(3,4)相同。
	如果结束位置(第二参数),小于起始位置(第一个参数),返回空数组。
	a.slice() 复制全部

3.) splice(删除, 插入, 替换)
	var a = [1,2,3]
	a.splice(1,1,'留1','留3')
	a ;[1, "留1", "留3", 3]
8.获取索引:
1.) indexOf() , lastIndexOf(): 查找元素在数组的中索引。
	var a = ['a', 'b' ,'c']
	a.indexOf('c') ; 2
	两种方法,只是查找方向不同。
9.迭代方法
以下函数都是对数组中的每一项运行给定的回调函数
	every() :,如果函数对每一项返回true,才最终返回true.
	filter() :  返回回调函数返回true的项组成的数组
	map(): 返回回调函数运算返回的结果组成的数组
	forEach:没有返回值。
	some(): 对任一项返回true,则返回true.
	
	var a = [1,2,3]
	var b = a.map( (item,index,array) => { return item*2 })
	b; [2, 4, 6]

reuduce()和reduceRight()
回调函数,有四个参数:前一个值,当前值,索引,数组对象;
从第二项开始运算的。
var a = [1,2,3,4]
var b = a.reduce((pre,cur,index,array) => { console.log(cur); return pre+cur})
b; 10
10 扩展运算符 …
作用: 数组展开。
var a = [1,2,3]
var b = [0,...a]
b; [0,1,2,3]

替代apply:
	function add(x,y,z) {
	  return x+y+z
	}
	
	var args = [1,2,3]
	var result = add.apply(null,args)
	console.log(result) ;6
	
	var result = add(...args);
	console.log(result); 6

解构:
a = [1,2,3,4]
[b,...c] =a
b ; 1
c ; [2, 3, 4]

字符串转数组:
var s = 'hello'
[...s] ; ["h", "e", "l", "l", "o"]
11 Array.from
Array.from方法用于将两类对象转为真正的数组:
	类数组的对象(array-like object)
	可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)
	任何有length属性的对象,都可以通过Array.from方法转为数组
12 Array.of
Array.of方法用于将一组值,转换为数组。
Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1
13 copyWithin
Array.prototype.copyWithin(target, start = 0, end = this.length)
数组实例的copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。
[1, 2, 3, 4, 5].copyWithin(0, 3)
// [4, 5, 3, 4, 5]

// 将3号位复制到0号位
[1, 2, 3, 4, 5].copyWithin(0, 3, 4)
// [4, 2, 3, 4, 5]

14 find 和 findIndex
数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员

[1, 5, 10, 15].find(function(value, index, arr) {
  return value > 9;
}) // 10

[1, 5, 10, 15].findIndex(function(value, index, arr) {
  return value > 9;
}) // 2
15 includes
Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,
与字符串的includes方法类似

[1, 2, 3].includes(2)     // true
[1, 2, 3].includes(4)     // false
[1, 2, NaN].includes(NaN) // true

[1, 2, 3].includes(3, 3);  // false
[1, 2, 3].includes(3, -1); // true
16 flat和flatMap: 数组扁平化
[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]

[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]

[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值