1.数组常用方法之 push
push是用来在数组的末尾追加一个元素,返回添加以后的长度
var arr=[1,2,3];
//可追加一个
arr.push(5);
//可追加多个
arr.push(6,7,8);
console.log(arr);
运行结果:
2.数组常用方法之pop
pop
是用来删除数组末尾的一个元素,返回删除的元素
var arr=[1,2,3];
var res = arr.pop()
console.log(res);//结果为3
3.数组常用方法之 unshift
unshift是在数组的最前面添加一个元素
var arr = [1,2,3];
arr.unshift(4);
console.log(arr);//[4,1,2,3]
4.数组常用方法之shift
shift是删除数组最前面的一个元素,返回删除的元素。
var arr = [1,2,3];
var res = arr.shift();
console.log(res);//1
5.数组常用方法之splice
splice是截取数组中的某些内容,按照数组的索引来截取。
语法:splice(从哪个索引位置开始,截取多少个,替换的新元素)(第三个参数可不写)
var arr = [2,3,4,5];
arr.splice(0,2,'nihao','hi');
console.log(arr);// ['nihao', 'hi', 4, 5]
6.数组常用方法之reverse
reverse是用来反转数组使用的
var arr = [1,2,3];
arr.reverse();
console.log(arr);//[3,2,1]
7.数组常用方法之sort
sort
是用来给数组排序的(默认按照字典排序 先按照第一位排序-如果第一位相等就按照第二位)
字符串升序,降序排列
//降序排列
let arr = ['a', 'b', 'd', 'c'];
arr.sort(function (a, b) {
if(a > b){
return -1;
}else if(b > a){
return 1;
}else{
return 0;
}
});
console.log(arr);
//升序排列
let arr = ['a', 'b', 'd', 'c'];
arr.sort(function (a, b) {
if(a > b){
return 1;
}else if(b > a){
return -1;
}else{
return 0;
}
});
console.log(arr);
数字的降序,升序排列
//升序
var arr = [1, 5, 3, 7, 6];
arr.sort(function (a, b) {
return a - b;
});
//降序
var arr = [1, 5, 3, 7, 6];
arr.sort(function (a, b) {
return b - a;
});
以数组中字符串的长度进行排序
let arr = ['1234', '56', '23980', '234', '7'];
arr.sort(function (a, b) {
return a.length - b.length;
});
随机乱序
let arr = [1, 2, 4, 5, 3, 11, 28, 97, 0];
arr.sort((a,b)=>Math.random()-0.5);
以数组中的对象中的某个属性值进行排序
let arr = [
{name: 'ww', age: 12},
{name: 'gg', age: 8},
{name: 'uu', age: 69}
];
arr.sort(function (a, b) {
return a.age - b.age;
});
8.数组常用方法之 concat
-
concat
是把多个数组进行拼接 -
和之前的方法有一些不一样的地方,就是
concat
不会改变原始数组,而是返回一个新的数组
var arr = [1, 2, 3]
// 使用 concat 方法拼接数组
var newArr = arr.concat([4, 5, 6])
console.log(arr) // [1, 2, 3]
console.log(newArr) // [1, 2, 3, 4, 5, 6]
9.数组常用方法之 join
-
join
是把数组里面的每一项内容链接起来,变成一个字符串 -
可以自己定义每一项之间链接的内容
join(要以什么内容链接)
不会改变原始数组,而是把链接好的字符串返回
var arr = [1,2,3];
var res = arr.join('+');
console.log(res);//1+2+3
10.slice 复制数组的一部分
var arr9 = [9,8,7,6,5,4,3,2];
//两个参数 slice(开始位置,结束位置)(不包含结束位置)不改变原数组
console.log(arr9.slice(1,3));//[8, 7]
//一个参数 从start开始到最后
console.log(arr9.slice(3));//[6, 5, 4, 3, 2]
//第二位是负值 从后往前 最后一位是 -1
console.log(arr9.slice(1,-2));//[8, 7, 6, 5, 4]
//indexOf 查找元素的第一次出现的下标,如果找到返回下标,找不到返回-1
console.log(arr9.indexOf(100));//-1
console.log(arr9.indexOf(3));//6
11.filter 过滤(根据条件过滤想要的数据)
根据对象里的id过滤出想要的数据
let data = [
{
id: 0,
name: "篮球",
pprice: 200,
pmun: 20,
},
{
id: 1,
name: "足球",
pprice: 150,
pmun: 25,
},
{
id: 2,
name: "海绵宝宝玩偶",
pprice: 160,
pmun: 30,
},
{
id: 3,
name: "dnf赛利亚手办",
pprice: 350,
pmun: 15,
},
{
id: 4,
name: "T恤",
pprice: 50,
pmun: 346,
},
{
id: 5,
name: "键盘",
pprice: 385,
pmun: 20,
},
];
let arr = [2, 0, 1];
//在data里面是否包含arr里面的数组
//let wantData = data.filter((item) => arr.indexOf(item.id) > -1);
//或者可以用includes()来判断是否存在
let newData = data.filter(item=>arr.includes(item.id));
console.log(wantData);
12.reduce对数组做聚合操作,返回一个计算的结果
计算数据中为true的总价
let sum = data
.filter((item) => item.isTrue)
.reduce((sum, v) => sum + v.pprice * v.pmun, 0);
console.log(sum);
13.map循环原数组,可以对数组的每一项进行改造返回改造后的数组
//取出数据里的name
let newData = data.map((item) => item.name);
console.log(newData);
14.findIndex和indexOf
1.区别:indexOf可以判断数组里的简单数据类型比如数字或者字符串,findIndex可以根据条件判断此数据在数组中的位置。
2.应用:这两种方法成功找到数据时会返回数组下标,找不到时会返回-1。可以根据这个特性findIndex(条件)>-1或者indexOf(数据)>-1来判断是否存在。