个人使用的一些数组方法记录,详情请参考MDN文档 Array - JavaScript | MDN (mozilla.org)
改变原数组的方法
//push 向数组的末尾添加一个或多个元素
let arr =[1,2,3]
arr.push(4)
console.log(arr); // [1,2,3,4]
// pop 删除数组的最后一个元素
let arr =[1,2,3]
arr.pop()
console.log(arr); // [1,2]
// unshift 向数组的开头添加一个或多个元素
let arr = [1,2,3]
arr.unshift(-1,0)
console.log(arr); // [ -1, 0, 1, 2, 3 ]
// shift 删除数组的第一个元素
let arr =[1,2,3]
arr.shift()
console.log(arr); // [2,3]
// splice 根据下标删除数组元素,第二个参数代表从下标位置开始删除几个
let arr = [1, 2, 3, 4, 5];
arr.splice(2, 0, 99); // 在索引2的位置插入元素99
console.log(arr); // 输出: [1, 2, 99, 3, 4, 5]
arr.splice(2, 1); // 从索引2的位置删除一个元素
console.log(arr); // 输出: [1, 2, 3, 4, 5]
arr.splice(2, 2, 66, 77); // 从索引2的位置删除两个元素,并插入元素66和77
console.log(arr); // 输出: [1, 2, 66, 77, 5]
// replace 查找匹配的字符串然后用指定的字符串替换它
var text = "cat,bat,sat,fat";
var result = text.replace("at","ond");//"cond,bat,sat,fat"
// reverse 颠倒数组
let arr=[{a:1},{a:2},{a:3}];
arr.reverse() // [{ a: 3 }, { a: 2 }, { a: 1 }]
// sort 对数组元素进行排序
let arr=[1,2,3,4,5];
arr.sort((a,b)=>a-b); //顺序,升序(从小到大) [1,2,3,4,5]
arr.sort((a,b)=>b-a); //逆序(从大到小) [5,4,3,2,1]
不改变原数组的方法
// join 数组转字符串,不影响原数组,需要新参数接收
// split 字符串转数组
let arr =[1,2,3,4,5]
let str=arr.join("-") // '1-2-3-4-5'
let newArr = str.split("-") //// ['1', '2', '3', '4', '5']
// slice 根据下标区间截取数组,左闭右开
let arr = [1, 2, 3, 4, 5];
let arr1=arr.slice(1,4) // [ 2, 3, 4 ]
let arr2=arr.slice(-4,-1) // [ 2, 3, 4 ]
let arr3=arr.slice(0,-1) // [ 1, 2, 3, 4 ]
// indexOf 从左到右查看数组是否存在这个元素,有就返回它的第一个下标,没有就返回-1 (lastIndexOf 从右到左)
let arr =[1,2,3]
let num=arr.indexOf(2) // 1
let num1=arr.indexOf(4) //-1
// find 返回数组中第一个通过回调条件的元素
// findIndex 返回数组中第一个通过回调条件的元素下标
let arr =[{a:1},{a:2},{a:3}];
arr.indexOf({a:1}) //-1
arr.findIndex(item => item.a > 1) // 1
arr.find(item => item.a > 1) // { a: 2 }
// includes 判断数组是否存在指定元素,有就返回true,否则返回false
let arr = ['a', 'b', 'c', 'd', 'e']
console.log(arr.includes('a')); // true
console.log(arr.includes('f')); // false
// some 查看数组中是否至少有一项元素满足回调的条件,有则返回true,否则返回false
// every 查看数组中全部项元素是否满足回调的条件,有则返回true,否则返回false
let arr =[1,2,3,4,5]
let newArr =arr.some((item,index,arr)=>{
return item>3
}) //true
let newArr =arr.every((item,index,arr)=>{
return item>3
} //false
// filter 过滤出符合条件的元素,不会影响原数组,需要新数组接收
let arr =[{a:1},{a:2},{a:3}]
let newArr =arr.filter((item,index,arr)=>{
return item.a>1
}) //[{a:2},{a:3}]
// forEach 遍历数组
let arr = [1, 2, 3, 4, 5];
let newArr arr.forEach((element) => {
console.log(element); // 1,2,3,4,5
});
// map 通过对每个元素调用指定函数来创建一个新数组
let arr = [
{ a: 1, b: 2 },
{ a: 3, b: 4 },
];
arr.map((item) => {
return item.a = "a";
});
console.log(arr); //[ { a: 'a', b: 2 }, { a: 'a', b: 4 } ]
let newArr = arr.map((item) => {
return { ...item, c: 5 };
}); //[{a:1,b:2,c:5},{a:3,b:4,c:5}]
// reduce 用于对数组中的元素进行累积操作,将数组缩减为一个值。它通过提供的回调函数来实现累积操作,并返回最终结果
arr.reduce((acc,cur,i,arr)=>{},initialValue)
- acc 第一项的值或者上一次叠加的结果值,或者是提供的初始值(initialValue)
- cur 数组中当前被处理的元素
- i 当前元素在数组中的索引
- arr 数组本身
// 累加
let arr = [{a:1},{a:2},{a:3}]
let sum =arr.reduce((acc,cur,i,arr)=>{
return acc+cur.a
},0) // 6
console.log(sum)
// 计算数组中每个元素出现的次数
const arr = ["name", "age", "long", "short", "long", "name", "name"];
let sum = arr.reduce((pre, cur) => {
pre[cur] = pre[cur] + 1 || 1;
return pre;
}, {}); //{ name: 3, age: 1, long: 2, short: 1 }
let sumArr = [];
for (let i in sum) {
let obg = {
name: i,
value: sum[i],
};
sumArr.push(obg)
}
console.log(sumArr); // [({ name: "name", value: 3 },{ name: "age", value: 1 },{ name: "long", value: 2 },{ name: "short", value: 1 })];
// 数组去重
const arr = ['name', 'age', 'long', 'short', 'long', 'name', 'name'];
let arrResult = arr.reduce((pre, cur) => {
if (!pre.includes(cur)) {
pre.push(cur)
}
return pre;
}, [])
console.log(arrResult);// ["name", "age", "long", "short"]