JS数组,数组方法
1.push和pop
push是在数组中添加元素或数组,在原数组的末尾再追加一个元素或数组,追加的数组看作一个整体
var arr = [2,5,8,9,4];
console.log(arr);
console.log(arr.push([7,4,3]));
console.log(arr);
打印结果为
[ 2, 5, 8, 9, 4 ]
6
[ 2, 5, 8, 9, 4, [ 7, 4, 3 ] ]
pop是删除数组中的最后一个元素
var arr = [2,5,8,9,4];
console.log(arr);
var result = arr.pop();
console.log(result);//返回删除的元素
console.log(arr);//[2,5,8,9]
打印的结果为
[ 2, 5, 8, 9, 4 ]
4
[ 2, 5, 8, 9 ]
2.连接数组的另一个方法concat方法
var arr = [2,5,8,9,4];
console.log(arr);
var result = arr.concat(7);//添加到了一个新的数组中,不改变原数组,在原数组的副本上进行操作所以第二次打印结果和第一次的一样。
var result = arr.concat([1,3,10]);//将添加的数组展开添加到副本数组的末尾
console.log(arr);
console.log(result);
打印结果为
[ 2, 5, 8, 9, 4 ]
[ 2, 5, 8, 9, 4 ]
[2, 5, 8, 9, 4, 1, 3, 10]
3.shift和unshift
shift是在数组的头部删除一个元素
var arr = [2,5,8,9,4];
console.log(arr);
console.log( arr.shift());//返回要删除的元素
console.log(arr);//返回最终数组
打印结果为
[ 2, 5, 8, 9, 4 ]
2
[ 5, 8, 9, 4 ]
unshift在数组的头部添加一个元素
var arr = [2,5,8,9,4];
console.log(arr);
console.log( arr.unshift(10));//6 返回数组添加后的长度
console.log(arr);
打印结果为
[ 2, 5, 8, 9, 4 ]
6
[ 10, 2, 5, 8, 9, 4 ]
4.sort排序
sort排序默认升序
var arr = [2,5,8,9,4];
console.log(arr);
arr.sort();
console.log(arr);
打印结果为
[ 2, 5, 8, 9, 4 ]
[ 2, 4, 5, 8, 9 ]
如果要降序,方法一:
var arr = [2,5,8,9,4];
console.log(arr);
arr.sort(function(a,b){
if(a>b){
return -1;//不交换位置的意思
}
return 1;
})
console.log(arr);
方法二:
var arr = [2,5,8,9,4];
console.log(arr);
arr.sort();
arr.sort(function(a,b){
return b-a;//降序
})
console.log(arr);
// return a.age-b.age;//按照年龄升序
5.随机生成列表
var stus = [];
//循环生成10个对象(年龄不一样),并且添加到stus数组中
for(var i =0;i<10;i++){
//生成随机数
var num = Math.ceil(Math.random()*20);//ceil(天花板)向上取整,随机数取值范围(0-1)*20 范围扩大到(0-20)
var num1 = Math.ceil(Math.random()*20);
// console.log(num);
var obj = {
name:'zhangsan'+num1,
age:num,
gender:num%2?'男':'女',//年龄双数判断为女,单数为男。
};
stus.push(obj);
}
stus.sort(function(a,b){
// return a.age-b.age;
return a.name-b.name;//排不出来,避免减号,使用if排出来是ask码排出
return a.name<b.name ?-1:1;
});
console.log(stus);
6.过滤
var stus = [];
for(var i =0;i<10;i++){
//生成随机数
var num = Math.ceil(Math.random()*20);
var num1 = Math.ceil(Math.random()*20);
// console.log(num);
var obj = {
name:'zhangsan'+num1,
age:num,
gender:num%2?'男':'女',
};
stus.push(obj);
}
//过滤出年龄大于15的学生
let result = stus.filter((item)=>{
return item.age>15;
})
console.log(result);
stus.forEach(function(item){
return item.name;
})
console.log(result);
forEach(function(item,index){}) 遍历数组
map(function(item,index){}) 映射数组中的元素某一部分
filter(function(item,index){}) 过滤数组中的元素
join()
连接数组的元素,组成字符串
且该方法返回的是一个字符串
toString() 将数组转成字符串
7.万能比较对象
function compare(attr){
return function(a,b){
return a[attr]<b[attr]?-1:1; //对attr变量的属性升序
}
}
8.数组反转
let arr = [4,7,9,1];
console.log(arr);
//数组反转
arr.reverse();
console.log(arr.toString());
console.log(arr.join('&'));
console.log(arr);
打印结果为
[ 4, 7, 9, 1 ]
1,9,7,4
1&9&7&4
[ 1, 9, 7, 4 ]