let letters = ['A', 'A', 'B', 'C', 'A'];
const countletters= letters.reduce((allLetters, letter) => {
if (letter in allLetters) {
allLetters[letter] ++;
else {
allLetters[letter] = 1;
return allLetters;
}, {});
console.log(countletters) //{A: 3, B: 1, C: 1}
const arraySum = (arr, val) => arr.reduce((acc, cur) => {
return cur == val ? acc + 1 : acc + 0
}, 0);
let arr = [ 0, 1, 1,4,2, 0, 1, 3 ]
console.log(arraySum(arr, 1)) // 数组arr中 1 元素出现的次数为3
本质上就是能 “批量” 创建相同类型的变量(在Java中,数组中包含的变量必须是相同类型)。
数组的定义:
数据类型[] 数组变量名 = new 数据类型[整数]; //整数:数组的长度
数据类型[] 数组变量名 = {值1,值2,值3…值n}; //(静态初始化)
数据类型[] 数组变量名 = new 数据类型[]{值1,值2,值3…值n}; //(动态初始化)
数组(引用类型):
数组的下标不要越界使用,否则会报错(编译阶段不报错,运行报异常)
二维数组的定义:
数据类型[][] 数组变量名
方法的参数是一个遍历函数,该函数可以接受三个参数,分别是当前数组成员、当前数组成员的位置(从零开始)、原数组。该方法返回一个新数组,不改变原数组。用于将嵌套的数组“拉平”,变成一维的数组。上面代码中,遍历函数返回的是一个双层的数组,但是默认只能展开一层,因此。默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将。方法的参数写成一个整数,表示想要拉平的层数,默认为1。方法将子数组的成员取出来,添加在原来的位置。的参数为2,表示要“拉平”两层的嵌套数组。上面代码中,原数组的成员里面有一个数组,
数组的reduce方法,接收一个函数(必须)和指定的初始值(非必须)作为参数,函数有三个参数,分别为初始值,当前项,当前数组,进行累加或者累积操作,初始值为每次累加或者累计后的结果 注意:在ie9一下的浏览器中,并不支持该方法 ! 语法:arr.reduce(fn(pre,cur,arr){},[initialValue]) 一些妙用: 统计每个字符出现的次数
//方法1:
var o...
let arr = [1,2,3,null,4,5]
let filterArray = arr.filter((item)=>{
return item != null //去掉数组的nu’l’l
filter()还可以用来去重
var r,
ary = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
map():
map和forEach等遍历方法不同,在forEach中return语句是没有任何效果的,而map则可以改变当前循环的值,返回一个新的被改变过值之后的数组(map需return),一般用来处理需要修改某一个数组的值。
let arr1 = [1,2,3];
let arr2 = arr1.map((value,key,arr) => {
console.l...