前端开发数组相关知识点

前端开发数组相关知识点

1、array
(1)数组的创建

1、let array=new Array();
2、array=[];
3、let array=[5] //长度为5的空数组

(2)稀疏数组:超出创建时指定长度的数组;

var array=new Array(5);
array[10]=6;
他的长度是10+1;

(3)数组元素的操作

1、array.push(value)数组末尾添加元素(一个或多个),返回新的长度
2、array.unshift(value)数组的首位添加元素(一个或多个),返回新的长度;
3、array.pop()删除并返回数组的最后一个元素;
4、array.shift()删除并返回数组的第一个元素;
5、delect array[i],删除数组的第I个元素
6、array.indexOf(value)查找数组中是否存在某一个元素,有则返回索引,无则返回-1
7、array.lastIndexOf(value)查找数组中是否存在谋一个元素,并返回最后一次出现的位置索引
8、array.reverse(),将数组中的元素进行翻转,在原数组上操作
9、array.sort().按照,默认字符编码进行排序,在原数组上操作;

(4)数组的转换

1、数组转字符串:join()和toString(),默认用,号隔开

join('连接符');join('-')

2、字符串数组split(‘分割符’)

(5)数组的操作

数组的拼接和截取

1、concat()数组的拼接
2、array.splice(index,length);截取(就是删除),从Index开始,截取length的长度,返回截取的新数组,改变原数组;
3、array.splice(startIndex,length,value1,value2,value3...)数组的替换从startIndex开始,替换的长度是length,替换的值是value1,value2...
array.splice(startIndex,0,arr2);从startIndex开始添加arr2到原数组,
3、array.slice(startIndex,engIndex),截取的长度前闭后开(];返回新数组
delect删除仍然占据位置,删除之后该位置是空;

(6)数组的遍历

一、不生成新数组
1、forEach(),//对数组中的每一项运行给定函数,没有返回值,他和for的效果相同
array.forEach((item,index,array)=>{
});
2、every()//对数组中的每一项运行给定函数,如果该函数对每一个项都返回true,则返回true;反之,有一个值是false就返回false(默认返回false)。不会生成新数组 也不会改变原数组
array.every((item,index,array)=>{
return item*index>3
})
返回值是true或false
3|some()对数组中的每一项运行给定函数,如果该函数对任一一项返回true,则返回true(默认返回false)

二、生成新数组
map()产生新数组,不改变原数组
filter()过滤器,返回符合条件的心数组
reduce(fun,参数2)累加,接收两个参数,第二个参数传递给函数的默认值,可以忽略
arr.reduce((initialValue,currentValue,index,arr)=>{
        return initialValue+currentValue
       })
initialValue:必须 上一次调用回调返回的值,或者是提供的初始值
currentValue: 必须 数组中当前被处理的元素
index可选 当前元素在数组中的索引
arr可选 调用 reduce 的数组

reduce实列

1、累加
var a = [1,2,23,34,5,6,78,98,900];
var n = a.reduce(function (x, y) { return x + y; }, 0);
2、累积
var a = [1,2,23,34,5,6,78,98,900];
var m = a.reduce(function (x, y) {  return x*y;  }, 1);
3、求数组最大值
var a = [1,2,23,34,5,6,78,98,900];
var max = a.reduce(function (x, y) {return x > y ? x : y;}, 0);

Array.isArray(arr):判断是否是数组;

	var a = [1,2,23,34,5,6,78,98, 23,900];
	//数组是特殊的对象类型
    console.log(typeof a);		//object
    console.log(Array.isArray(a)); //true
	console.log(a instanceof Array);	//true

类数组
下标从零开始,且自然递增的整数做键名,有length表示元素个数的对象,我们就认为他是类数组对象!

var obj = {0: 1, 1: 2, 2: 3, length: 3};

额外:
字符排序

var arr1 = ['bc', 'b', 'ca', 'zm', 'Am'];
console.log(arr1.sort(function(a, b) {
    return a > b ? 1 : -1; // 升序
}));

console.log(arr1.sort(function(a, b) {
    return a > b ? -1 : 1; // 降序 
}));

console.log(arr1.sort(function(a, b) {
    return a.toUpperCase() > b.toUpperCase() ? 1 : -1;
}))

console.log(arr1.sort(function(a, b) {
    return a.toUpperCase() > b.toUpperCase() ? -1 : 1;
}))

要得到字符串忽略大小写的比较数组

var names = ['Ana', 'ana', 'john', 'John']; 
names.sort(function(a, b){
	if (a.toLowerCase() < b.toLowerCase()){
		return -1;
	}
	if (a.toLowerCase() > b.toLowerCase()){
		return 1;
	}
	return 0;
});

以上为个人笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值