JavaScript 数组 API
数组 API
API (Application Programming Interface)应用编程接口。
已经写好的,可以直接拿来调用的函数/方法,这些函数可以实现特定的功能。
数组,提供了很多操作数组中数据的 API,简化了操作数据的过程。
join() - 将数组转换为字符串
join([str])
将数组中所有的元素链接为一个字符串,返回一个字符串。
此函数不改变原数组。
参数为自定义分隔符。
参数可以省略,默认为逗号“,” 。
案例代码:
// join() 将数组中的元素链接为一个字符串
var num =[1,2,3,4,5,6];
console.log(num);
console.log(num.join()); // 默认逗号隔开 1,2,3,4,5,6
console.log(String(num)); // 1,2,3,4,5,6
console.log(num.toString()); // 1,2,3,4,5,6
var date = [2018,5,2];
console.log(date.join("-")); // 2018-5-2
var words = ["hello","today","is","Sunday"];
console.log(words.join(" ")); // "hello today is Sunday"
var chars = ["h","e","l","l","o"];
console.log(chars.join("")); // hello 什么都不输入,是无缝拼接
concat() - 拼接数组
concat(a1,[a2,a3,...])
拼接数组,将当前数组和其他元素或者数组拼接为一个新数组,返回新数组。
此函数不改变原数组。
参数既可以是一个值,也可以是一个数组。
可以接收任意多个参数。
若参数为数组,会将数组中的元素打散后再拼接。
代码案例
var arr1 = [1,2,3]
var newarr = arr1.concat(4,5,6)
console.log(arr1) // 1,2,3
console.log(newarr) // 1,2,3,4,5,6
var arr2 =[7,8,9]
var newarr2 = arr1.concat(11,22,arr2)
console.log(newarr2) // 1,2,3,11,22,7,8,9
var arr3 = [[1,2]];
arr3[9] = "a";
var arr4 =[7,8,9];
var n = arr3.concat(arr4); // 当前数组结构保持不变!!!
console.log(n); // [[1,2],“a”,7,8,9]
slice() - 截取数组元素
slice(开始位置下标,结束位置下标加一) 包头不包尾
选取当前数组中指定开始到结束位置的元素,组成新数组并返回。
不改变原数组。
支持负数下标,表示从后往前数。
第二个参数可以省略,表示一直取到数组结尾。
若一个参数都不写,表示选取所有元素,即复制数组。
案例代码
// slice() 选取当前数组中指定开始到结束位置的元素,组成新数组并返回。
var arr =["a","b","c","d","e","f","g"];
var a1 = arr.slice(2,5); // 包头不包尾
console.log(a1); // cde
console.log(arr); //abcdefg
var a2 =arr.slice(2,-2);
console.log(a2); // cde
var a3 = arr.slice(2);
console.log(String(a3)) // cdefg 第二个参数省略表示一直取到结尾
var a4 = arr.slice();
console.log(a4); //abcdefg 若一个参数都不写,表示选取所有元素,即复制数组。
splice() - 删除/插入/替换元素
splice(开始删除的起始位置,删除多少个元素,添加的新元素,可多个)
删除元素,并向数组中添加新元素。
会直接修改原数组!
会有返回值,返回被删除的元素组成的数组。
下标支持负数。
案例代码
// 删除从 i 位置的 n 个元素。
var a1 =[1,2,3,4,5,6,7,8,9];
a1.splice(2,4);
var d1 = console.log(String(a1)); // 1 2 7 8 9
console.log(d1) // 查看被删除的元素 3 4 5 6
// 删除从 i 位置到结尾的所有元素
var a2 =[1,2,3,4,5,6,7,8,9];
a2.splice(3); // 省略第二个参数表示删除到结尾
console.log(a2); // 1 2 3
// 删除倒数 n 个元素
var a3 =[1,2,3,4,5,6,7,8,9];
a3.splice(-3);
console.log(String(a3)); // 1 2 3 4 5 6
// 插入元素
var a4 =[1,2,3,4,5,6,7,8,9];
a4.splice(2,0,"a");
console.log(String(a4)) // 1 2 a 3 4 5 6 7 8 9
// 替换
// 将从 i 位置开始的元素替换为新元素
var a5 =[1,2,3,4,5,6,7,8,9];
a5.splice(2,3,"a","b","c");
console.log(String(a5)); // 1 2 a b c 6 7 8 9
reverse() - 倒序排列数组
reverse()
颠倒数组中元素的顺序。
会直接修改原数组。
案例代码
var n = [1,2,3,4,5,6];
n.reverse();
console.log(String(n)); // 6 5 4 3 2 1
sort() - 排序
sort()
排序是默认将数组元素临时转变为字符串,然后比较 Unicode 编码由小到大排列。
对数组元素进行排序。
会直接修改原数组。
案例代码
var arr = [2,3,7,9,4,6];
arr.sort(); // 默认由小到大升序排列
console.log(String(arr)) // 2 3 4 6 7 9
var arr2 =["tom","jerry","smith","mia","jack"];
arr2.sort();
console.log(String(arr2)); //jerry jack mia smith tom
var arr3 = [12,3,123,23,2,1];
arr3.sort(); // 按Unicode 编码排列,不是数字大小排列
console.log(String(arr3)); // 1,12,123,2,23,3
var arr4 = [12,3,123,23,2,1];
arr4.sort(sorFn); // 传入一个自定义的比较函数,作为排序依据
function sorFn(a,b) { // 固定用法,升序 背锅
return a-b;
}
function sorFn1(a,b) { // 固定用法,降序 背锅
return b-a;
}
console.log(String(arr4)); // 1,2,3,12,23,123
arr4.reverse();
console.log(String(arr4)); // 123 23 12 3 2 1
栈和队列
JS 中可以通过操作数组,实现 栈(Stack)和 队列(Queue)的功能。
栈,是一端封闭,只能从另一端进出的数据结构。
特点:(LIFO,Last In First Out)先进后出,即后插入的数据,先被取出。
案例代码
var a1 = [1,2,3,4,5];
var n1 = a1.push(6,7); // 返回数组新长度
console.log(String(a1)) // 1 2 3 4 5 6 7
console.log(String(n1)) // 7
a1.pop(); // 从结尾处删除一个元素 ,返回被删除的元素
console.log(String(a1)) // 1 2 3 4 5 6
var a2 = [1,2,3,4,5];
a2.unshift(6,7) // 从开头添加新元素,返回新长度
console.log(String(a2)) // 6 7 1 2 3 4 5
a2.shift(); // 删除数组第一个元素 ,返回被删除的元素
console.log(String(a2)) // 7 1 2 3 4 5
队列 是只能从一端进,从另一端处的数据结构。
特点:(FIFO,First In FirstOut)先进先出,即先插入的数据,先被取出。
组合使用数组的方法,可以实现队列功能。
案例代码
//队列
var a=[1,2,3,4,5];
a.push(6);//末尾入
console.log(String(a)); // 1 2 3 4 5 6
a.shift();//开头出
console.log(String(a)); // 2 3 4 5 6
var count=5;
var queue=[];
for(var i=1;i<=5;i++){
queue.push("顾客"+i);
console.log(String(queue));
}
queue.push("你");
console.log(String(queue));
while(count>0){
var first=queue.shift();
console.log(first+"抢购成功");
console.log(String(queue));
count--;
}
console.log(queue+"没抢上");
结束!~!