concat拼接数组
join 将数组进行拼接 ( arr.join("*") )
reverse() 翻转数组 arr.reverse() 返回翻转后的数组
sort 数组排序,返回排序后的数组
数组查找
includes()用来判断一个数组是否包含一个指定的值,存在返回ture ,( arr.includes(值) )
indexof() 在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。 (通常用它判断数组中有没有这个元素) (arr.indexOf(值))
数组增删
pop() 删除最后一个, 返回删除的值
shift 删除第一个 , 返回删除的值
push 添加在最后,返回数组最新的长度
unshift 添加在第一个,返回数组最新的长度
splice
splice(指定添加/删除的位置,删除个数,添加的东西)arr.splice(截取下标开始的数据)返回新数组,影响原数组(为截取的数)
arr.slice(开始下标,结束下标) 截取数组返回一个新数组(包前不包后),但不影响原数组
数组循环
find 返回满足条件的对象,不满足返回undefined
findIndex返回满足条件的下标,不满足返回 -1
some 只要有一个条件满足立刻结束,返回为true/false
every 判断是否全部满足条件
map返回一个新数组,返回值构成其结果(可重新定义)
fifter 筛选数组,返回一个新数组(满足条件的数组)(对于undefined不处理)
forEach没有返回值
for in 与 for of
- for in 返回值是
索引key推荐遍历对象 - for of 返回值是
值value,修复for in 的不足,但不可遍历对象,需要用object.keys() 解决
reduce可数组降维、求和(注意要给一个两个参数第一个为函数,第二个为0),
数组去重
let arr = [4, 898, 898, 24, 25556, 6, 486, 24, 25556];
// 方案一:es6新增 set
console.log([...new Set(arr)]);
//方案二:相邻元素去重
function quchong(arr) {
// 先对数组进行排序
arr = arr.sort();
let newArr = [];
// 循环数组,判断相邻的元素不相等则推入新数组
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(quchong(arr));
// 方案三:
function quchong1(arr) {
let newArr = [];
// 循环数组,利用indexOf判断循环的数是否在新数组
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(quchong1(arr));
数组降维
let arr1 = [5, 87, 15, [8, 56], 225, 89, [885, 2]];
// 方案一:reduce
let newArr = arr1.reduce((sum, item) => sum.concat(item), []);
console.log(newArr, "newArr");
// 方案二:es6新增 flat
let newArr1 = arr1.flat();
console.log(newArr1, "newArr1");
// 方案三:递归
const newArr2 = [];
function jiangwei(arr) {
arr.forEach((item) => {
if (Array.isArray(item)) { //判断是否为数组
jiangwei(item); //是数组继续调用
} else {
newArr2.push(item); //不是数组直接推入
}
});
}
jiangwei(arr1);
console.log(newArr2, "newArr2");