<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/*
1.判断一个值是否是数组
if(Array.isArray(value)){
// 操作数组
}
*/
/*
2.迭代器方法
*/
const a = ["foo", "bar", "baz", "qux"]
console.log(a.keys()); // Array Iterator
// 通过Array.from() 直接转换为数组实例
const aKeys = Array.from(a.keys())
console.log(aKeys); //
// 还有 a.values() a.entries()
/*
3.复制和填充
批量复制fill()
填充数组copyWithin()
*/
/*
4.转换字符串
toString()
valueOf()
toLocaleString()
join()---替换字符串分隔符(以指定元素分割开数组)
*/
let colors = ["red", "blue", "green"]
console.log(colors.toString()); //red,blue,green 转换字符串--
/*
5.栈方法(后进先出)
---push() 添加在数组末尾
---pop() 删除数组的最后一项,同时减少数组length值,返回被删除的项
*/
/*
6.队列方法(先进先出)
---shift() 删除数组的第一项并返回它
---unshift() 在数组开头添加任意多个值
*/
/*
7.排序方法
---reverse() 反向排列
---sort() 升序排列
*/
// 排序案例--因为sort()先把值转换为了字符,所以10会排在5之前
function compare(value1, value2){
if(value1 < value2) {
return -1;
}else if(value1 > value2) {
return 1;
}else {
return 0;
}
}
let values = [2,1,6,,0,5,8,7,10,16,15]
values.sort(compare);
console.log(values); // [0, 1, 2, 5, 6, 7, 8, 10, 15, 16, empty]
// 简洁写法(降序--把return的1和-1修改一下就可以)
let values2 = [2,1,6,,0,5,8,7,10,16,15]
values2.sort((a, b) => a < b ? 1 : a > b ? -1 : 0);
console.log(values2); // [16, 15, 10, 8, 7, 6, 5, 2, 1, 0, empty]
/*
8.操作方法
---concat() 把参数添加在数组末尾,返回一个新数组,原数组不变
---slice() 切割数组,原数组不变
---splice() 在数组中间插入元素(删除,插入,替换),返回被删除的元素
*/
/*
9.搜索和位置方法
严格相等---(会使用===)比较
indexOf() ---没找到返回-1,找到返回索引
lastIndexOf() ---从末尾开始向前搜索
includes()
断言函数---(3个参数 元素 索引 和数组本身)每个索引都会调用这个函数
find()
findIndex()
*/
let numbers = [1,2,3,4,5,4]
console.log(numbers.indexOf(4)); // 3
console.log(numbers.lastIndexOf(4)); // 5---找到第一个,从后往前寻找(但是返回的索引是正序)
console.log(numbers.includes(4)); // true
const people = [{
name: "Matt",
age: 27
},{
name: "nick",
age: 29
}]
console.log(people.find((el, index, array) => el.age < 28)); // {name: "Matt", age: 27}
console.log(people.findIndex((el, index, array) => el.age < 28)); // 0
/*
10.迭代方法
(三个参数 数组元素 元素索引 数组本身)
every()和some()
filter()
forEach()
map()
*/
// every()每一项都是true,才会返回true,否则false
// some()有一项true,就是true
// filter()返回true的项会组成数组之后返回
let numbers2 = [1,2,3,4,5,4]
let filterResult = numbers2.filter((item, index, array) => item > 2)
console.log(filterResult); // [3, 4, 5, 4]
// map()--可对元素进行函数处理,并返回数组
let numbers3 = [1,2,3,4,5,4]
let mapResult = numbers3.map((item, index, array) => item*3);
console.log(mapResult); // [3, 6, 9, 12, 15, 12]
/*
11.归并方法
reduce()
reduceRight()
参数(上一个归并值, 当前项, 当前项的索引 ,数组本身)--求和
*/
let numbers4 = [1,2,3,4,5,4]
let sum = numbers4.reduce((pre, cur, index, array) => pre + cur);
console.log(sum); // 19
</script>
</body>
</html>