数组的操作
let arr=[12,5,8];
添加、删除
// arr.push() 添加新的在末尾,可以是一个,也可以是一堆
arr.push(99); // (4) [12, 5, 8, 99]
arr.push(99,34,18,22); //(7) [12, 5, 8, 99, 34, 18, 22]
// arr.pop() 从后面删除,删除数组的最后一位,返回被删除值
arr.pop(); //(2) [12, 5]
arr.pop(); //(1) [12]
arr.pop();
// 当数组里的参数全部删了后,再弹回返回 undefined
let a=arr.pop();
console.log(arr,a); //[] undefined
// arr.shift () 从前面删除
arr.shift();
console.log(arr); // (2) [5, 8]
//arr.unshift () 从前面添加
arr.unshift(67,70,27,17);
console.log(arr); // (7) [67, 70, 27, 17, 12, 5, 8]
//splice 万能
//splice(起点,数量,东西...)
let arr1=[1,2,3,4,5,6,7,8,9];
// 删除 从第三个数往后面删除3个
arr1.splice(3,3);
console.log(arr1); // (6) [1, 2, 3, 7, 8, 9]
//添加 不删除的话用0表示, 然后再在后面写入要添加的
arr1.splice(3,0,'a','b','c');
console.log(arr1); // (12) [1, 2, 3, "a", "b", "c", 4, 5, 6, 7, 8, 9]
// 既添加又删除
arr1.splice(3,2,'a','b','c');
console.log(arr1); // (10) [1, 2, 3, "a", "b", "c", 6, 7, 8, 9]
排序
//concat 多个数组连接,把两个或者多个数组拼接在一起
//arr.concat(arr2,arr3,...)
let arr=[1,2,3,4,5,6,7,8,9];
//数组拼接在后面
let arr2=arr.concat([10,11,12]); // (12) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// 数组链接在前面
let arr2=[10,11,12].concat(arr); // (12) [10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9]
//reverse 反转 数组前后调换位置
let arr=[0,1,2,3,4,5,6,7,8,9];
let arr2=arr.reverse();
console.log(arr,arr2,arr===arr2);
//(10) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
//(10) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] true
//arr.join(''); //把数组变成字符串
//[1,2,3].join('') => '123'
//[1,2,3].join('-') => '1-2-3'
//arr.sort() 对数组的元素进行排序,默认以字符串大小编码排序
arr.sort(function( a , b ){ return a – b });//标准排序传入比较函数
let arr=[37,56,77,89,85,48,39,99,2,6];
arr.sort(function (a,b){
return a-b;
})
console.log(arr);
// (10) [2, 6, 37, 39, 48, 56, 77, 85, 89, 99]
随机生成6个不重复数组,并且排好序
// 函数查找 arr.indexOf(?)
// 返回值是数组所在的下标,多个的情况下只查找第一个 没找到时返回 -1
let arr1=[12,66,8,34,2,5];
let index=arr1.indexOf(8);
console.log(index); // 2
//随机生成6个数组 (有问题的写法)
//此写法当固定的次数内多个数一样时,数组长度就少了
let arr=[];
for (let i=0; i<6;i++){
let n=rnd(1,33);
if(arr.indexOf(n)===-1){
arr.push(n);
}
}
console.log(arr);
//for(let i=0;i<20;i++) 适合固定次数的循环
//while(条件) 适合达到条件才结束
let arr=[];
function rnd(n,m){
return Math.floor(n+Math.random()*(m+1-n));
}
// 当arr.length的长度到6时才停止
while(arr.length<6){
let n=rnd(1,33); // 随机输出十个1~33之间的数
if(arr.indexOf(n)===-1){
arr.push(n);
}
}
arr.sort(function (a,b){
return a-b;
});
console.log(arr);