悟透前端 | javascript 数组之 includes、reduce
Array.prototype.includes
ES7 添加对此方法的支持,includes()
方法用来判断一个数组是否包含一个指定的值的元素,并返回布尔值true
或false
,如果包含则返回 true
,否则返回 false
。
语法
arr.includes(valueToFind[, fromIndex])
参数
valueToFind
(必须):需要查找的元素值,比较字符串和字符时是区分大小写。fromIndex
(可选):从数组fromIndex
索引处开始查找valueToFind
。负数 ,则按升序从array.length + fromIndex
的索引开始搜 (即使从末尾开始往前跳fromIndex
的绝对值个索引,然后往后搜寻)。默认值为0
。
返回值
包含则返回 true
,否则返回 false
。
实例
使用
includes
方法可以使代码简短易懂。include
方法在比较值时也很方便,如下代码。
Array.prototype.reduce
reduce()
方法对数组中的每个元素执行reducer
函数(升序执行),将其结果汇总为单个返回值。
语法
Array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
为数组中的每一个元素依次执行callback
函数,不包括数组中被删除或从未被赋值的元素。
参数
callback
(必须):执行数组中每个值 (如果没有提供initialValue
则第一个值除外)的reducer
函数,包含四个参数initialValue
(可选):作为第一次调用callback
函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用reduce
将报错。
返回值
函数累计处理的结果。
实例
console.log(当前索引:${currentIndex})
,是为了更加直观的看到索引值。
第一次未定义初始值输出如下:
第二次定义了累计器初始值输出如下:
接下来我们来看一个奇葩需求,出于某种原因,需要一个包含所有用户全名的新数组(他们的姓,加上他们的名字),但只有当他们是 20 多岁,并且他们的全名是 3 个字的时候才需要。不要问我们为什么需要这么奇葩的数据子集,产品经理问了,我们很乐意帮忙^_^
结束
版权声明: 本文为 InfoQ 作者【devpoint】的原创文章。
原文链接:【http://xie.infoq.cn/article/a7073d4f60835782d49ead8b0】。文章转载请联系作者。
评论