数组常用方法
数组转字符串
var arr = [1, 3, 5];
var str1 = arr.join(); // "1,3,5"
var str2 = arr.join("~"); // "1~3~5"
数组逆序
var arr = [1, 3, 5];
var arr1 = arr.reverse(); // [5,3,1]
数组排序
var arr = ["a", "c", "d", "b"];
arr.sort(); // ["a","b","c","d"];
// sort 会按照字符串的格式进行排序
var arr1 = [13, 25, 32, 14, 8];
arr1.sort(); // [13, 14, 25, 32, 8]
// 根据返回的数值决定谁排列在前面
arr1.sort(function (a, b) {
return a - b;
});
数组合并
var arr = [1, 2, 3];
arr.concat(4, 5); // [1,2,3,4,5] ,这个只是返回值,原数组未修改
arr.concat([4, 5]); // [1,2,3,4,5]
arr.concat([[4, 5]]); // [1,2,3,[4,5]]
数组片段(传入起始下标和终止下标)
// 原数组并没有更改,只是将数组片段作为返回值返回
var arr = [1, 2, 3, 4, 5];
arr.slice(1, 3); //[2,3]
arr.slice(1); // [2,3,4,5]
arr.slice(1, -1); // [2,3,4]
数组片段(原数组会更改)
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.splice(2);
console.log(arr); // [1, 2]
console.log(arr1); // [3, 4, 5]
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.splice(2, 1);
console.log(arr); // [1, 2, 4, 5]
console.log(arr1); // [3]
用其他数据去填充拆分出去的数组部分
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.splice(2, 1, "x", "y", "z");
console.log(arr); // [1, 2, "x", "y", "z", 4, 5]
console.log(arr1); // [3]
数组映射
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.map(function (x) {
return Math.pow(x, 2);
}); //[1, 4, 9, 16, 25];
数组过滤
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.filter(function (x) {
return x % 2 != 0;
}); // [1, 3, 5]
判断每一个元素是否都符合条件
var arr = [1, 2, 3, 4, 5];
var flag = arr.every(function (x) {
return x > 3;
}); // false
判断所有元素中是否至少有一个满足条件
var arr = [1, 2, 3, 4, 5];
var flag = arr.some(function (x) {
return x > 3;
}); // true
数组的叠加操作
var arr = [1, 2, 3];
var arr1 = arr.reduce(function (x, y) {
/*
3 1
4 2
6 3
*/
console.log(x, y);
return x + y;
}, 3);
数组检索
var arr = [1, 3, 5, 7, 9];
// 第二个参数可以指定从第几个下标开始查找
console.log(arr.indexOf(5, 0)); //2
console.log(arr.indexOf(6)); //-1
// 查找数组中满足条件的第一个元素
const arr = [1, 2, 3];
let val = arr.find((item) => item >= 2);
console.log(val); //2
// 查找数组中满足条件的第一个元素的索引
const arr = [1, 2, 3];
let val = arr.findIndex((item) => item >= 2);
console.log(val); // 1
数组扁平化
let arr = [1, 2, [3, 4, 5, ["a", "b"]]];
// 传递的参数定义 需要展开到第几层。 Infinity 可以完全展开
let res = arr.flat(5);
console.log(res); //[1, 2, 3, 4, 5, "a", "b"]
结合函数的扁平化处理
let arr = [
["小明", 13, "chengdu"],
["小花", 15, "beijing"],
["小刘", 17, "chengdu"],
];
let res = arr.flatMap((item, index) => {
/*
["小明", 13, "chengdu"] 0
["小花", 15, "beijing"] 1
["小刘", 17, "chengdu"] 2
*/
console.log(item, index);
// 接着进一步处理,只取出下标为 0 的数据(姓名)
return item.filter((item, index) => index == 0);
});
// ["小明", "小花", "小刘"]
console.log(res);
数组填充
let arr = [1, 2, 3, 4];
arr.fill("x", 1, 3);
console.log(arr); // [1, "x", "x", 4]
检索数组中是否包含某值
let arr = ["a", "b", "c", "d"];
let res = arr.includes("b", 1); // 指定一个开始检索的下标
console.log(res); // true