文章目录
前言
JavaScript中存在很多关于数组的一些API函数供使用者进行调用,下面我将列举一些常见的API函数,包括他们的定义和使用举例。
一、数组转字符串
1. String()函数
定义:
String(arr) :将arr中每个元素转为字符串,用逗号分隔
应用场景:
对数组拍照: 用于鉴别是否数组被修改过
2. arr.join()函数
定义:
arr.join(“连接符”) :将arr中每个元素转为字符串,用自定义的连接符分隔
应用场景:
1.将字符组成单词: chars.join("")->无缝拼接
扩展: 判断数组是空数组: arr.join("")=="
2.将单词组成句子: words.join(" ")
3.将数组转化为页面元素的内容:
"<开始标签>"+arr.join("</结束标签><开始标签>")+"</结束标签>"
例如:
//将字符拼接为单词
var chars=["H","e","l","l","o"];
console.log(chars.join("")); //Hello
二、数组的拼接和选取
1. 选取函数slice()
定义:
slice() 返回现有数组的一个子数组,var subArr=arr.slice(starti,endi+1)选取arr中starti位置开始,到endi结束的所有元素组成新数组返回——原数组保持不变。强调: 凡是两个参数都是下标的函数,都有一个特性:含头不含尾
选取简写:
1.一直选取到结尾: 可省略第二个参数
2. 如果选取的元素离结尾近: 可用倒数下标:arr.slice(arr.length-n,arr.length-m+1);可简写为:arr.slice(-n,-m+1);
3. 复制数组: arr.slice(0,arr.length);可简写为:arr.slice();
例如:
var arr1 = [10, 20, 30, 40, 50];
var arr2 = arr1.slice(1, 4); //20,30,40
var arr3 = arr1.slice(2); //30,40,50
var arr4 = arr1.slice(-4, -2); //20,30
console.log(arr1); //现有数组元素不变
三、修改数组——splice函数
1. 删除操作
定义:
splice 直接修改原数组:arr.splice(starti,n);删除arr中starti位置开始的n个元素不考虑含头不含尾(因为此处的第二个参数不是下标值,第二个参数代表的是一种数量值)。其实: var deletes=arr.splice(starti,n);返回值deletes保存了被删除的元素组成的临时数组。
例如:
var arr1 = [10, 20, 30, 40, 50];
var arr2 = arr1.splice(2, 1);
console.log( arr1 ); //经过操作 此处的arr1的值不发生改变
console.log( arr2 ); //arr2是新的数组
2.插入操作
定义:
arr.splice(starti,0,值1,值2,…),在arr中starti位置,插入新值1,值2,…原starti位置的及其之后的值被向后顺移。
例如:
var arr1 = [10, 20, 30, 40, 50];
var arr2 = arr1.splice(2, 0, 21,22,23);
var arr2 = arr1.splice(2, 0, [91,92,93]);//此处插入了一个数组
3. 替换操作
定义:
其实就是删除旧的,插入新的arr.splice(starti,n,值1,值2,…),先删除arr中starti位置的n个值,再在starti位置插入新值。
强调: 删除的元素个数和插入的新元素个数不必一致。
例如:
var arr1 = [10, 20, 30, 40, 50];
var arr2 = arr1.splice(2, 2, 21,22,23);//在下标为2的地方删除后插入多个元素后完成替换
var arr2 = arr1.splice(2, 2, [91,92,93]);
四、颠倒数组
1. reverse()函数
定义:
reverse() 颠倒数组中元素的顺序,一般这样使用:arr.reverse()。
例如:
var arr1 = [10, 20, 30, 40, 50];
arr1.reverse();
console.log( arr1 );
五、数组排序
1. sort()函数
定义:
将元素按从小到大的顺序重新排列。arr.sort(): 默认将所有元素转为字符串再排列。
问题: 只能排列字符串类型的元素
解决: 使用自定义比较器函数
自定义数组排序方式
数组排序是针对原数组排序,排序后并不创建新数组,因此将排序后的结果会存在原数组中。因此不需要创建一个变量去接收排序后的数组。
使用方法:
升序模版:Array.sort(function(a,b){return a-b});
降序模版:Array.sort(function(a,b){return b-a});
六、JS数组过滤filter
用法:
过滤器会创建一个新的数组,原数组不会改变 语法:新数组 = 非空原数组.filter((条目,索引,原数组)=>{ 筛选得业务逻辑 }) 声明:(条目,索引,原数组有时候可以简写只留下条目为(条目)
JS代码:
let oldArr = [
{
name:'tom',
age:13
},
{
name:'tom2',
age:14
},
{
name:'tom3',
age:15
},
{
name:'tom4',
age:16
},
];
//此处的oldArr就是原数组
let newArr = oldArr.filter((item)=>{//item可以认为是原数组的形式参数
return item.age>15
});
console.log(oldArr.length) //4 原数组保持不变
console.log(newArr.length) //1 新数组为过滤后的数组