对于reduce函数使用
- 有初始化值时reduce( (a,b){},initValue),a等于initValue,b等于数组第一个值
- 无初始化值时reduce((a,b){}),a等于数组第一个值,b等于数组第二个值
- reduce的函数内部可以有返回值,返回的结果就是reduce函数的返回值,通常用户返回处理结果,同时在遍历的过程中,将返回的结果作为参数传递给第一个参数,递推进行处理
reduce((a, b) => ( a = a + b,a))这种写法,是有返回值的,
1. 初始化参数a的值时,如下,a = 初始化的值1,b从第一个元素取值
const str = "edlsjfoewwofjsljl";
str.split("").reduce((a,b) => {
console.log("a==" + a)
console.log("b==" + b)
return a;
},"1")
2.不初始化时,a就等于数组中第一个元素的值,b从第二个元素开始取值
统计字符串出现个数(reduce)
简单统计
const ss = "slkdfjsdldkkjflksk"
const array = ss.split("");
let i = 0;
let result = {};
for (; i < array.length; i++) {
if (result[array[i]]) {
result[array[i]]++;
} else {
result[array[i]] = 1;
}
}
console.log(result)
使用reduce函数
const ss = "slkdfjsdldkkjflksk"
const result = ss.split("").reduce(function(a,b){
if(a[b]){
a[b]++;
}else{
a[b] = 1;
}
return a;
},{})
console.log(result);
再升级点
const ss = "slkdfjsdldkkjflksk"
let result = ss.split("").reduce((a, b) => (a[b]++ || (a[b] = 1), a),{})
console.log(result)
对于map函数,只要用来遍历,并可以返回处理结果(结果类型为数组)
const str = "1234562342342345454"
var resultStrs = str.split("").map((item) => {
let msg = "未知"
if (item == 1) {
msg = "未处理"
} else if (item == 2) {
msg = "已处理"
} else if (item == 3) {
msg = "待查处"
} else if (item == 4) {
msg = "待腾退"
} else {
msg = "未知"
}
return msg
});
返回处理结果为: ['未处理', '已处理', '待查处', '待腾退', '未知', '未知', '已处理', '待查处', '待腾退', '已处理', '待查处', '待腾退', '已处理', '待查处', '待腾退', '未知', '待腾退', '未知', '待腾退']
foreach函数主要用来遍历,方法中的function回调有三个参数:
- 第一个参数是遍历的数组内容
- 第二个参数是对应的数组索引
- 第三个参数是数组本身
var data = "8922301943702394723833546546459".split("2"); data.forEach((value, index, data)=>{ console.log(value + "==" + index) })
返回结果参考:
89==0
==1
30194370==2
3947==3
3833546546459==4