数组平均数
使用reduce()将每个值添加到累加器,初始值为0,总和除以数组长度。
const average = arr => arr.reduce((acc, val) => acc + val, 0) / arr.length;// average([1,2,3]) -> 2
大写每个单词的首字母
使用replace()匹配每个单词的第一个字符,并使用toUpperCase()来将其大写。
const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase());// capitalizeEveryWord('hello world!') -> 'Hello World!
首字母大写
使用slice(0,1)和toUpperCase()大写第一个字母,slice(1)获取字符串的其余部分。省略lowerRest参数以保持字符串的其余部分不变,或将其设置为true以转换为小写。(注意:这和上一个示例不是同一件事情)
const capitalize = (str, lowerRest = false) =>str.slice(0, 1).toUpperCase() + (lowerRest ? str.slice(1).toLowerCase() : str.slice(1));// capitalize(‘myName’, true) -> ‘Myname’
计数数组中值的出现次数
每次遇到数组中的特定值时,使用reduce()来递增计数器。
const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0);// countOccurrences([1,1,2,1,2,3], 1) -> 3
数组之间的区别
从b创建一个Set,然后在a上使用Array.filter(),只保留b中不包含的值。
const difference = (a, b) => { const s = new Set(b); return a.filter(x => !s.has(x)); };// difference([1,2,3], [1,2]) -> [3]
过滤数组中的非唯一值
将Array.filter()用于仅包含唯一值的数组。
const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i));// filterNonUnique([1,2,2,3,4,4,5]) -> [1,3,5]
获取滚动位置
如果已定义,请使用pageXOffset和pageYOffset,否则使用scrollLeft和scrollTop,可以省略el来使用window的默认值。
const getScrollPos = (el = window) =>({x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft,y: (el.pageYOffset !== undefined) ? el.pageYOffset : el.scrollTop});// getScrollPos() -> {x: 0, y: 200}
滚动到顶部
使用document.documentElement.scrollTop或document.body.scrollTop获取到顶部的距离。
从顶部滚动一小部分距离。
使用window.requestAnimationFrame()来滚动。
const scrollToTop = _ => {const c = document.documentElement.scrollTop || document.body.scrollTop;if (c > 0) {window.requestAnimationFrame(scrollToTop);window.scrollTo(0, c - c / 8);}};// scrollToTop()