随便写写,用了这么久了说总结吧。总是想显得不那么舒适,换个姿势来吧。
String.prototype.includes() //ES6用于查询给定字符串是否包含某一个字符
Array.prototype.includes() //ES7用于判断给一个数组是否包含一个指定的值
includes(valueToFind[,fromIndex])
//valueToFind : 需要查找的元素
//fromIndex :可选参数 从fromIndex索引处开始查找valueToFind。如果为负值,则按升序从array.length+fronIndex(绝对值)的索引开始搜。默认为0。
并不会按照顺序来吧,想到哪看到哪,就写到哪吧!无序的集中。
Array.prototype.flat() //ES10 按照一个可指定的深度递归遍历数组,并将所有元素于与遍历到的子数组中的元素合并为一个新数组返回。
const a = [1,2,3,4,[5,[6,7]]]
a.flat() //[1, 2, 3, 4, 5, [6,7]]
a.flat(2) // [1, 2, 3, 4, 5, 6, 7]
a.flat(Infinity) //不知层级时就用这个吧,毕竟简单 [1, 2, 3, 4, 5, 6, 7]
flat([depth])
//depth : 要提取嵌套数组的结构深度,默认值是1。
//该方法会移除数组中的空项。
说到这个就要说说 reduce()方法了,她是对数组中的每个元素执行一个由您提供的函数(升序执行),并将结果汇总为单个返回值。
let a = [1,3,4,5,2]
const reducer = (accumulator,currentValue) => accumulator + currentValue
a.reduce(reducer) // 15
reduce(callback(accumulator,currentValue[,index[,array]])[,initialValue])
//callback 执行数组中每个值(如果没有提供initialValue则第一个值除外)的函数,包含4个参数
//accumulator:累计器累计回调 的返回值。她是上一次调用回调时返回的累计值,或initialValue
//currentValue:数组正在处理的元素
//index:可选参数。数组中正在处理的当前元素的索引。如果提供了initialValue,则起始索引为0,否则从索引1起始。
//array:可选参数。调用reduce()的数组。
//initialValue:可选参数。作为第一次调用callback函数时的第一个参数的值。如果没有提供初始值,则将使用数组中的第一个元素。在没有初始值得空数组上调用reduce将报错。
look this
//累加对象数组里的值
var initialValue = 0;
var sum = [{a:1},{a:2},{a:3}].reduce((accumulator, currentValue) => accumulator + currentValue.a),initialValue);
// sum 6
//将二维数组转化为一维数组
var flattened = [[0,1],[2,3],[4,5]].reduce((accumulator, curentValue) => accumulator.concat(currentValue),[])
// [0,1,2,3,4,5]
//计算数组中每个元素出现的次数
var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
var count = names.reduce((a,c) => {
if(c in a){
a[c] ++ ;
}else{
a[c] = 1
}
return a;
},{});
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }