map
假设我们有一个数组arrOne,其中存储了一些数字,并且我们想对每个数字执行一些计算。但是我们也不想弄乱原始数组。
这个时候我们就可以使用map函数来帮助我们实现。
let arrOne = [32, 45, 63, 36, 24, 11]
arrOne.map(value/element, index, array)
假设我们想在不更改原始数组的情况下将每个元素乘以 5。
这是执行此操作的代码:
let arrOne = [32, 45, 63, 36, 24, 11]
const multFive = (num) => {
return num * 5; //'num' here, is the value of the array.
}
let arrTwo = arrOne.map(multFive)
console.log(arrTwo)
这是输出:
[ 160, 225, 315, 180, 120, 55 ]
那么这里发生了什么?好吧,我有一个arrOne包含 6 个元素的数组。multFive接下来,我用“num”作为参数初始化了一个箭头函数。这将返回num和 5 的乘积,其中“num”变量由 map() 方法提供数据。
如果您不熟悉箭头函数但熟悉常规函数,箭头函数与此相同:
function(num) {
return num * 5;
}
然后,我初始化了另一个变量arrTwo,该变量将存储 map() 方法创建的新数组中。
在“arrOne”数组上调用了 map() 方法。因此,map() 方法将从 index[0] 开始选择该数组的每个值,并对每个值执行所需的计算。然后它将使用计算值形成一个新数组。
重要提示:请注意我是如何强调不更改原始数组的。那是因为这个属性使 map() 方法与 'forEach()' 方法不同。map() 方法创建一个新数组,而“forEach()”方法用计算出的数组改变/更改原始数组。
filter
我们可以使用此方法根据提供的条件过滤数组。filter() 方法还会创建一个新数组。
举个例子:假设你有一个数组arrName并且这个数组存储了一堆数字。现在,我们想看看哪些数字可以被3整除, 并从中创建一个单独的数组。
这是执行此操作的代码:
let arrNum = [15, 39, 20, 32, 30, 45, 22]
function divByFive(num) {
return num % 3 == 0
}
let arrNewNum = arrNum.filter(divByFive)
console.log(arrNewNum)
这是输出:
[ 15, 39, 30, 45 ]
让我们分解这段代码。arrNum一个包含 7 个元素的数组。divByFive用“num”作为参数初始化了一个函数。每次为比较传递一个新的 num 时,它都会返回 true 或 false,其中 'num' 变量由 filter() 方法提供数据。
然后,我初始化了另一个变量arrNewNum,它将存储 filter() 方法将创建的新数组。
调用了arrNum数组的 filter() 方法。因此,filter() 方法将从 index[0] 开始选择该数组的每个值并对每个值执行操作。然后它将使用计算值形成一个新数组。
reduce
假设我们想要求数组中所有元素的总和。现在,您可以使用 for 循环或 forEach() 方法,但 reduce 是专门为此类任务构建的。
该reduce()
方法通过对元素共同执行所需的操作,将数组简化为单个值。
让我们以上面的例子为例并对其使用reduce:
let arrNum = [15, 39, 20, 32, 30, 45, 22]
function sumOfEle(num, ind) {
return num + ind;
}
let arrNum2 = arrNum.reduce(sumOfEle)
console.log(arrNum2)
这是输出:
203
一切都与 map() 和 filter() 方法相同——但重要的是要了解 reduce 方法是如何工作的。
reduce() 方法没有明确的语法。让我们看看最简单的一个,它将为您提供使用 reduce() 的所有方法的要点。
下面是一些示例语法reduce()
:
//Taking the above array for an example
let arrNum = [15, 39, 20, 32, 30, 45, 22]
arr.reduce((a1, a2) => {
return a1 + a2
})
看看这个语法。在这里,reduce 采用两个参数,a1
并且a2
,其中a1
充当累加器,而a2
具有索引值。
现在,在第一次运行时,累加器等于零并a2
保存数组的第一个元素。reduce 所做的是将 a2 保存的累加器中的值抛出并将其递增到下一个。之后,reduce() 方法对两个操作数执行操作。在这种情况下,它是加法。
因此,基本上a1
是累加器,当前为零并a2
保存 15。第一次运行后,累加器中有 15 并a2
保存下一个值,即 39。
所以,0 + 15 = 15
现在,在第二次运行时,在累加器中减少 throwsa2
的值 39,然后对两个操作数执行操作。
所以,15 + 39 = 54
现在,在第三次运行时,累加器的总和为 15 和 39,即 54。a2
现在,reduce 方法将 20 扔到累加器上,总和为54 + 20 = 74
.
这个过程一直持续到数组结束。