前端开发数组相关知识点
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;
});
以上为个人笔记