1.高阶函数: 将函数作为参数传给另一个函数
2.高阶函数(filter/map/reduce)
3. filter
let newNumbs = num.filter(function (n) {
const num = [7, 10, 32, 54, 34, 100, 103, 111, 200, 40];
return n < 100;
});
4.map的使用(对数组里所有东西进行某次的变化用map)
let checkNewNumbs = newNumbs.map(function (n) {
return n * 2;
});
5. reduce(function(accumulator, currentValue, currentIndex, arr), initialValue);
注意: accumulator: 必需。累计器
currentValue: 必需。当前元素
currentIndex: 可选。当前元素的索引;
arr: 可选。要处理的数组
initialValue: 可选。传递给函数的初始值,相当于accumulator的初始值
#求和
let check2NewNumbs = checkNewNumbs.reduce(function (preValue, n) {
return preValue + n;
}, 0);
console.log(check2NewNumbs);
#数组去重
let arr = ["30度净水机", "冰柜", "电话", "冰柜", "电话"];
let newArr = arr.reduce((pre, cur) => {
if (!pre.includes(cur)) {
// includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
return pre.concat(cur);
// concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
} else {
return pre;
}
}, []);
console.log(newArr);
#数组维度转换
let arr1 = [ [0, 1],[2, 3],[4, 5],];
let newArr1 = arr1.reduce((pre, cur) => {
return pre.concat(cur); // 合并pre 与 cur, 并返回一个新数组
}, []);
console.log(newArr1); // 一维数组 [0, 1, 2, 3, 4, 5]
#字符统计/单词统计同理
let str1 = "abcdaabc";
let sstr = str1.split("").reduce((res, cur) => {
res[cur] ? res[cur]++ : (res[cur] = 1); // 如果cur第一次出现,记为1
return res; // 否则记录数+1
}, {}); // 得到 {a: 3, b: 2, c: 2, d: 1}
console.log(sstr);
#求最大值(最小)
let arr3 = [23, 123, 800, 12];
let max = arr3.reduce((pre, cur, index, arr) => {
return pre > cur ? pre : cur;
});
console.log(max);
#将字符串转换为整数
let str5 = "43214";
let strParseInt = str5
.split("") // 得到 ['4', '3', '2', '1', '4']
.map((item) => {
return item.charCodeAt() - 48;
}) // 得到 [4, 3, 2, 1, 4]
.reduce((a, b) => {
return a * 10 + b;
}); // 得到 43214
console.log(strParseInt);