常用方法

1.forEach()

var data = [1,2,3,4,5];
var sum = 0;
//求和
data.forEach((item)=>{sum+=item})
//给原数组的每个值加1
data.forEach((value,index,data)=>{data[index] = value + 1})

2.concat()  //合并多个数组,返回合并后的新数组,原数组没有变化。

const array = [1,2].concat(['a', 'b'], ['name']);
// [1, 2, "a", "b", "name"]

3.filter()  //返回一个新数组,包含通过callback函数测试的所有元素。

var fil = [5,4,3,2,1];
smallvalues = fil.filter((x)=>{return x < 3});
console.log(smallvalues)//小于3
oddNumber = fil.filter((x,i) => x % 2 === 0);//偶数

4.map()  //返回新数组

var a = [1,2,3], b;
b = a.map((x)=>{return x*3});
console.log(a,b)

5.every()和some()  //every()和some()方法是数组的逻辑判定

var ever = [1,2,3,4,5];
var xiaoyushi = ever.every((x)=>{return x < 10})//返回true,所有的值都小于10
var evenNumber = ever.every((x)=> x % 2 === 0)//返回false,不是所有的值都是偶数
var shifouyousi = ever.some((x)=> x==4)//数组里面有一个值等于4则返回true

6.reduce()和reduceRight

//reduce为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值)
var arr = [1,2,3,4];
var qiuhe = arr.reduce((prev, cur, index, arr)=>{
//prev:上一次调用回调返回的值,或者是提供的初始值(initialValue); cur:数组中当前被处理的元素
console.log(prev, cur, index);
return prev + cur;
})
//实例解析initialValue参数
var arr1 = [1,2,3,4];
var qiuhe2 = arr1.reduce((prev,cur,index,arr)=>{
console.log(prev,cur,index);
return prev + cur;
},0)//这里设置了初始值
console.log(arr1, qiuhe2);
//结论: 如果没有initialValue,reduce会从索引1的地方开始执行callback方法,跳过第一个索引。如果提供initialValue,从索引0开始。 /var arr2 = [];

var qiuhe3 = arr2.reduce((prev, cur, index, arr)=>{//报错,不能处理空数组

console.log(prev, cur, index);

return prev + cur;

})
/ var arr3 = [];

var qiuhe4 = arr3.reduce((prev, cur, index, arr)=>{//不会报错,因为设置了初始值

console.log(prev, cur, index);

return prev + cur;

},0)

console.log(arr3,qiuhe4) //reduce的简单用法(求和,求乘积)

var arr4 = [1,2,3,4,5,6,7,8,9,10];

var qiuhe5 = arr4.reduce((x,y)=>{return x + y})

var mul = arr4.reduce((x,y)=>{return x * y})

var max = arr4.reduce((x,y)=>{return (x>y)?x:y})//求最大值 //reduce的高级用法

//1.计算数组中每个元素出现的次数

let names = ['alice','bob','tiff','bruce','alice'];

let nameNum = names.reduce((pre, cur)=>{

if(cur in pre){

pre[cur]++

}else{

pre[cur] = 1

}

return pre

},{})

console.log(nameNum) //2.数组去重

let arr5 = [1,2,3,4,4,3,5];

let newArr = arr5.reduce((pre, cur)=>{

if(!pre.includes(cur)){

return pre.concat(cur)

}else{

return pre

}

},[])

console.log(newArr) //3.将二维数组转化为一维数组

let arr6 = [[0,1],[2,3],[4,5]];

let newArr2 = arr6.reduce((pre,cur)=>{

return pre.concat(cur)

},[])

console.log(newArr2); //4.将多维数组转化为一维数组

let arr7 = [[0,1],[2,3],[4,[5,6,7]]]

const newArr3 = function(arr){

return arr.reduce((pre,cur)=>{

return pre.concat(Array.isArray(cur)? newArr3(cur): cur)

},[])

}

console.log(newArr3(arr7)); //5.对象里的属性求和

var result = [

{

subject: 'math',

score: 10

},

{

subject: 'chinese',

score: 20

},

{

subject: 'english',

score: 30

}

]; var qiuhe6 = result.reduce((prev,cur)=>{

return cur.score + prev

},0)

console.log(qiuhe6)

JavaScript(es6)数组常用的方法的更多相关文章

  1. javascript中数组常用的方法

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...

  2. javascript中数组常用的方法和属性

    前言 在javascript中,数组是一种非常重要的数据类型,我们时常会和它打交道,最近在开发项目中频繁的使用到数组,但是自己对数组的众多方法已经是非常模糊了,为了方便自己以后能够更好的使用数组中的属 ...

  3. JavaScript ES6 数组新方法 学习随笔

    JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...

  4. JS 数组常用的方法

    数组常用的方法: x.toString()方法:任何对象都有toString方法.        将任何对象转为字符串. 一般不主动调用,系统在需要时自动调用 x.valueOf()方法:同toStr ...

  5. JavaScript学习总结之数组常用的方法和属性

    先点赞后关注,防止会迷路寄语:没有一个冬天不会过去,没有一个春天不会到来. 前言数组常用的属性和方法常用属性返回数组的大小常用方法栈方法队列方法重排序方法操作方法转换方法迭代方法归并方法总结结尾 前言 ...

  6. ES6数组对象新增方法

    1. Array.from() Array.from方法用于将两类对象转为真正的数组:类数组的对象( array-like object )和可遍历( iterable )的对象(包括 ES6 新增的 ...

  7. JS 开发中数组常用的方法

    大家有没有想过,js数组为什么会有这么多的方法,没错,就是为了不同场景下处理数据的需要,就像设计模式一样,都是为了能更好的处理当前场景的需要. 首先怎么创建一个数组呢, // 两种方式 // 1,构造 ...

  8. Javascript中数组的判断方法

    摘要: 1.数组检测的方法: 1) typeof . 2) instanceof . 3) constructor . 4) Object.prototype.toString. 5) Array.i ...

  9. javascript中数组Array的方法

    一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...

  10. JavaScript中数组中的方法:push()、pop()、shift()、unshift()、slice()、splice()、reverse()、join()、split()、concat()、indexOf()、forEach()、map()、

      1.创建数组的几种方法 //a).通过new来创建数组,new可以省略 var arr=new Array(); var arr=Array(); //b). .通过new来创建数组,并且赋值 v ...

随机推荐

  1. “随手记”APP与已经发布的记账软件“鲨鱼记账”的差距

    我们使用并观察了“鲨鱼记账”APP,发现,我们的软件真的还有很多不足的地方.就功能这方面来说:“鲨鱼记账”APP有更多的收入.支出分类:就界面来说:“鲨鱼记账”APP有比我们优美太多的页面和背景.但是 ...

  2. Android Studio--家庭记账本(六)

    (Android studio家庭记账本源码已上传至github,https://github.com/xhj1074376195/CostBook_app) 今天记账本终于可以算是完成了,实现了账户 ...

  3. PMP各种图比较记忆

    1.控制图:监控过程是否稳定,是否具有可预测的绩效,在问题还未发生时解决.需要关注控制图中的平均值.控制界限.规格界限的含义.控制上.下限一般设为±3个西格玛.过程失控的情况包括数据点在控制界限外,以 ...

  4. Java—时间的原点 计算时间所使用的 Date类/DateFormat类/Calendar类

    Date类 类 Date 表示特定的瞬间,精确到毫秒. 毫秒概念:1000毫秒=1秒 毫秒的0点: System.currentTimeMillis()  返回值long类型参数 用于获取当前日期的毫 ...

  5. C++中inet_pton、inet_ntop函数

    - 头文件windows下:#include <WS2tcpip.h>linux下:#include <sys/socket.h>#include <netinet/in ...

  6. C#设计模式之21-策略模式

    策略模式(Stragety Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/427 访问. 策略模式属于 ...

  7. C#LeetCode刷题之#824-山羊拉丁文​​​​​​​(Goat Latin)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3971 访问. 给定一个由空格分割单词的句子 S.每个单词只包含大 ...

  8. win10 安装msys2 和 ruby

    1.选择自己的版本 https://rubyinstaller.org/downloads/ Ruby+Devkit 2.5.1-2 (x64) Ruby+Devkit 2.5.1-2 (x86) 2 ...

  9. [源码分析]ArrayList和LinkedList如何实现的?我看你还有机会!

    文章已经收录在 Github.com/niumoo/JavaNotes ,更有 Java 程序员所需要掌握的核心知识,欢迎Star和指教. 欢迎关注我的公众号,文章每周更新. 前言 说真的,在 Jav ...

  10. Mybatis-02-CRUD及配置解析

    CRUD 1.namespace namespace中的包名要和Dao/Mapper接口的包名一致! 2.select 选择,查询语句; id:对应的namespace中的方法名 resultType ...