前端面试题之reduce实现map

编程入门 行业动态 更新时间:2024-10-25 08:26:51

前端<a href=https://www.elefans.com/category/jswz/34/1769418.html style=面试题之reduce实现map"/>

前端面试题之reduce实现map

前端面试题之reduce实现map

  • reduce函数
    • 1.计算数组的总和
    • 2.合并二维数组
    • 3.统计一个数组中不重复单词数
    • 4.对reduce的理解
  • map函数
  • reduce实现map

reduce函数

1.计算数组的总和

 var num = [1, 2, 3, 4, 5]var res = num.reduce((total, num) => total + num, 0)console.log(res)

2.合并二维数组

var  oldArray = [[0, 1], [2, 3], [4, 5]]
newArray = oldArray.reduce((a, b) => a.concat(b), [])
console.log(newArray)

3.统计一个数组中不重复单词数

var arr = ['taylor', 'swift', 'lenka', 'kripac', 'swift','lenka','kripac',]// 不使用reduce
// function CountNumberNoRepeated(array) {
//   let obj = {}
//   for(let item of array) {
//     obj[item] = (obj[item] + 1) || 1
//   }
//   return obj
// }// console.log(CountNumberNoRepeated(arr))// 使用reduce
function CountNumberNoRepeated(array) {return array.reduce((prev, next) => {prev[next] = (prev[next] + 1) || 1return prev}, {})
}
console.log(CountNumberNoRepeated(arr))

4.对reduce的理解

reduce(callback,initiaValue) 方法对数组中的每个元素按序执行一个由您提供的 callback 函数,每一次运行callback函数会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
第一次执行回调函数时,不存在“上一次的计算结果”。如果需要回调函数从数组索引为 0 的元素开始执行,则需要传递初始值。否则,数组索引为 0 的元素将被作为初始值 initialValue,迭代器将从第二个元素开始执行(索引为 1 而不是 0)。

var arr = ['taylor', 'swift'];
function noPassValue(){return arr.reduce(function(prev,next){console.log("prev:",prev);console.log("next:",next);return prev;});
}function passValue(){return arr.reduce(function(prev,next){console.log("prev:",prev);console.log("next:",next);prev[next] = 1;return prev;},{});
}
console.log("No Additional parameter:",noPassValue());
console.log("----------------");
console.log("With {} as an additional parameter:",passValue());
  • 完整的reduce函数的参数如下
reduce(function(previousValue, currentValue, currentIndex, array) { /* ... */ }, initialValue)

map函数

  • map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
  • map() 方法按照原始数组元素顺序依次处理元素。
  • 注意: map() 不会对空数组进行检测。

  • 注意: map() 不会改变原始数组。

var num = [1, 2, 3, 4, 5]var newNum =  num.map(value => value * 2)
console.log(newNum)num.map((value, index) => {console.log(value, index)
})

reduce实现map

var arr = [1, 2, 3, 4, 5]Array.prototype.map_new = function(callback, cbThis=null) {let res = []this.reduce((pre, cur, curIndex, arr) => {// 传入map回调函数拥有的参数,把每一项的执行结果push进res中res.push(callback.call(cbThis, cur, curIndex, arr));}, []);return res;
};arr.map_new((cur, curIndex) => {console.log(cur, curIndex)
})
//与map对比
arr.map((value, index) => {console.log(value, index)
})

更多推荐

前端面试题之reduce实现map

本文发布于:2024-02-27 06:18:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1705498.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:面试题   reduce   map

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!