es6新增数组常用方法

1.reduce方法

函数参数格式:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
callback函数里面有四个参数
total:初始值(也叫累计值)
currentValue: 当前元素值
currentIndex:当前元素索引值
arr:当前元素所属数组对象
initialValue:循环的初始值(第一次循环的初始值)

callback函数里面有两个参数的时候第一个代表累计值,第二个代表当前值

官方案例

const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;

// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15

举个小🌰 求一个字符串里面字母出现的次数

var str = 'aabbfcfc'; 
str.split('').reduce((res, cur) => {
  res[cur] ? res[cur]++ : res[cur] = 1;
  return res; // 循环结束之后return
}, {});   
// {a: 2, b: 2, f: 2, c: 2}

2.sort方法

Array.sort(fun)
fun是一个函数,可选可不选

说明

如果该方法没有使用参数,那么将按照字母顺序对数组元素进行排序,精确点说就是按字符编码顺序进行排序
(数字也是一样 sort函数把数组每个项当作字符串处理 造成10比9小!数字排序要加参数)
如果想按照其他顺序排序,就需要提供比较函数,该函数返回一个用于判断顺序的数字,比较函数应该具有两个参数a和b

返回值<0, 则a<b 不必交换位置
返回值>0, 则a>b 交换位置
返回值=0, 则a=b

无参数🌰

var a = [1,20,3,40,5];
a.sort() // [1, 20, 3, 40, 5]

有参数🌰

var a = [1,20,3,40,5];
var compare = (a,b) => {
   return a-b;
}
a.sort(compare) // [1, 3, 5, 20, 40]

按照数组里对象的某些属性进行排序

var arr = [
    {name:'zopp',age:0},
    {name:'gpp',age:18},
    {name:'yjj',age:8}
];
var compare = age => {
   return (a,b) => {
       return a[age] - b[age];
   }
}
arr.sort(compare(age))

3.findIndex方法

Array.findIndex(fun(currentVal, index, arr));

fun里面包含三个参数 分别是
1.当前元素(必选),
2.当前元素索引,
3.当前元素所属对象

fun返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。

var a = [2,3,4,6,7]; a.findIndex(item => item > 5); //3

4.some&&every方法

some && every

1.some方法
用于检测数组中元素是否满足指定条件,如果在循环遍历的时候有一个满足就停止遍历返回true
2.every方法
循环遍历中,有一个不满足筛选条件,就停止遍历,返回false

这两种方法的好处就是查询到想要的结果就停止遍历,免于不必要的循环

4.from方法

1.from接受一个参数的时候

Array.from('hello') // ["h", "e", "l", "l", "o"]

2.Array.from还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组,第二个参数是一个方法,方法的第一个参数是当前元素,第二个参数是当前元素的索引

Array.from([1, 2, 3], (x) => x * x)  
// [1, 4, 9]

4.set方法

此方法类似数组,唯一不同的是不允许重复

const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));

for (let i of s) {
  console.log(i);
}
// 2 3 5 4

Array.from可以将set结构转为数组

const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items); //  [1,2,3,4,5]

因此set可用作数组去重的最简单方法(此方法用不了二级数组的去重)

function dedupe(array) {
 return Array.from(new Set(array));
}

dedupe([1, 1, 2, 3]) // [1, 2, 3]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,062评论 0 6
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,114评论 0 13
  • 数组也是对象,数组有对象的所有方法 1. 数组属性(2个主要属性) length -> 万年不变的最常用属性 使用...
    南航阅读 4,351评论 2 3
  • 数组常用属性和方法总结 数组也是对象,数组有对象的所有方法 1. 数组属性(2个主要属性) length -> 万...
    生活是什么呢阅读 1,709评论 0 2
  • 在为祖国母亲过生的日子里,我一直在上班与休息中纠结,昨天下午上了三个小时,在整个公司无一人的前提下,如坐针...
    轻柔细语的阅读 332评论 0 0