数组的创建和各种API
数组的创建方式:
1. 数组直接量
var arr = [] // 创建一个空数组 var arr = [1,2,3,4] // 创建同时初始化元素
2. 实例化对象
var arr=new Array(); // 此时的arr.length 等于 0 输出:String(arr)等于 ""
3.创建空数组,初始化元素个数:
var arr=new Array(n); // 此时的 arr.length 等于 n 输出:String(arr) 等于 ,,,,,,,...
4.创建数组同时初始化元素:
var arr=new Array(值1,值2...);
关于数组的各种API:
1. 数组转字符串 String join
凡是频繁字符串拼接,都要用数组.join实现
var str=String(arr); // 默认用逗号分隔每个元素值 var str=arr.join("自定义连接符"); // 如果省略自定义参数,默认和String相同
将数组元素拼接为页面元素固定套路:
开始标签+arr.join("结束标签开始标签")+结束标签
2. 拼接和截取:【不修改原数组,生成新数组】 concat(拼接) slice(截取)
拼接:数组名.concat(新增的各个值) 新增的值可以是单个,也可以是数组,参数中的数组会被打撒成单个元素,再拼接,将参数中的值追加到arr1的值之后,【返回新数组】
var newArr=arr1.concat(值1,值2,arr2,...)
例子:
var arr1=[1,2,3]; var arr2 = []; arr2=arr1.concat(12,23,[123,33]); //拼接 console.log(arr1) //输出[1,2,3] console.log(arr2); //输出[1,2,3,12,23,123,33] var subArr=arr2.slice(2,4+1); //截取2~4下标 3个元素,含头不含尾 console.log(subArr); //输出[3,12,23] console.log(arr2); //输出[1,2,3,12,23,123,33]
3. 删除 插入 替换:直接【修改原数组】 splice
默认接收三个值, starti、n、值...
删除: var deleted=arr.splice(starti, n) starti 是开始删除的位置 n 是删除个数 deleted 接收被删除的元素组成的临时子数组 省略第三个值
插入: arr.splice(starti, 0, 值1, 值2,...) 在 starti 位置插入多个值 原starti位置的值向后顺移。 此时的n值永远为0
替换: var deleted=arr.splice(starti, n, 值1,...); 删除的元素个数n,不一定和新值个数相等。 splice方法没有打散数组参数的功能 三个参数都有值
var arr = [1,2,3,4,5,6] var deleted=arr.splice(2, 3) // 从下标 2 开始,截取 3 个值 console.log(arr) // 输出[1,2,6] 原数组被改变 console.log(deleted) // 输出[3,4,5] arr = [1,2,3,4,5,6] arr.splice(3,0,11,12,13) // 从下标3开始,在后面加入11,12,13 console.log(arr) // 输出 [1,2,3,11,12,13,4,5,6] arr = [1,2,3,4,5,6] var deleted=arr.splice(2,3,101,102,103) // 从下标 2 开始,截取 3 个值, 添加3个值 console.log(arr) // 输出[1,2,101,102,103,6] 原数组被改变 ,截取的位置刚好被添加的值替换 console.log(deleted) // 输出[3,4,5]
4.栈和队列 【修改原数组】 push pop unshift shift
js中没有专门栈和队列类型,其实都是用数组模拟的
arr.push(值) 将 值 压入数组末尾
var last=arr.pop() 从数组 末尾 弹出1个元素 不能传参
arr.unshift(值) 将 值 插入到开头
var first=arr.shift() 从数组 开头 弹出第1个元素
var arr = [1,2,3] // 以下输出假设在 arr = [1,2,3] 的情况下 arr.push(10) // 输出[1,2,3,10] arr.pop() // 输出[1,2] arr.unshift(10) // 输出 [10,1,2,3] arr.shift() // 输出[2,3]
5.翻转数组 【修改原数组】
arr.reverse()
6.数组的排序 【修改原数组】
arr.sort() : 默认将所有元素转为字符串PK unicode 传入函数 function compare(a,b){return a-b;} 如果为 return b-a 那么输出结果为倒序
function compare(a,b){return a-b;} var arr = [6,9,7,2,4,0,1] arr.sort(compare); console.log(arr) // 输出 [0,1,2,4,6,7,9]