JavaScript(es6)数组常用的方法
常用方法
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)数组常用的方法的更多相关文章
- javascript中数组常用的方法
在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...
- javascript中数组常用的方法和属性
前言 在javascript中,数组是一种非常重要的数据类型,我们时常会和它打交道,最近在开发项目中频繁的使用到数组,但是自己对数组的众多方法已经是非常模糊了,为了方便自己以后能够更好的使用数组中的属 ...
- JavaScript ES6 数组新方法 学习随笔
JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...
- JS 数组常用的方法
数组常用的方法: x.toString()方法:任何对象都有toString方法. 将任何对象转为字符串. 一般不主动调用,系统在需要时自动调用 x.valueOf()方法:同toStr ...
- JavaScript学习总结之数组常用的方法和属性
先点赞后关注,防止会迷路寄语:没有一个冬天不会过去,没有一个春天不会到来. 前言数组常用的属性和方法常用属性返回数组的大小常用方法栈方法队列方法重排序方法操作方法转换方法迭代方法归并方法总结结尾 前言 ...
- ES6数组对象新增方法
1. Array.from() Array.from方法用于将两类对象转为真正的数组:类数组的对象( array-like object )和可遍历( iterable )的对象(包括 ES6 新增的 ...
- JS 开发中数组常用的方法
大家有没有想过,js数组为什么会有这么多的方法,没错,就是为了不同场景下处理数据的需要,就像设计模式一样,都是为了能更好的处理当前场景的需要. 首先怎么创建一个数组呢, // 两种方式 // 1,构造 ...
- Javascript中数组的判断方法
摘要: 1.数组检测的方法: 1) typeof . 2) instanceof . 3) constructor . 4) Object.prototype.toString. 5) Array.i ...
- javascript中数组Array的方法
一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...
- 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 ...
随机推荐
- AI测温落地趋势:已成日常刚需 产品形态呈细分化发展
现如今不管走到哪儿,机场.车站.医院.商场.超市等公共场所都已经将体温检测作为常态化防疫手段.自全球疫情发生以来,不管欧洲.亚洲,还是中东.东南亚等国家都已经意识到,疫情防控的第一道关口便是测温. 而 ...
- pageHelper使用时的注意点
1 在pom.xml中导入相关的依赖(注意版本问题,报错十有八九是因为版本问题) <dependency> <groupId>com.github.pagehelper< ...
- JVM初探(三):类加载机制
一.概述 我们知道java代码会被编译为.class文件,这里class文件中的类信息最终还是需要jvm加载以后才能使用. 事实上,虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转 ...
- Python 3.x pip安装报错ERROR: No matching distribution found for PIL
安装完成即可解决无法引入PIL的问题.
- 关于 JavaScript 字符串的一个小知识
说起字符串,我们再熟悉不过了.接触编程的第一个经典任务就是输出字符串:Hello, world.但是你知道 JavaScript 字符串在计算机里是怎么表示的吗? 最简单直观但不太准确的的理解就是,字 ...
- JDBC+MySQL入门实战(实现CURD的例子)
前言 hello我是bigsai,今天咱们进行JDBC+MySQL实战,非常适合初入门的小伙伴打开新的世界.实现一个增删改查(curd)的例子.先点赞再观看.帅哥靓女养成好习惯! 在这个案例进行之前, ...
- Gulp的安装及用法
1.安装淘宝镜像 npm install cnpm -g --registry=https://registry.npm.taobao.org cnpm -v 2.生成项目描述文件 package.j ...
- 边缘计算、区块链、5G,哪个能走的更远
频繁出现的新词汇5G.区块链.边缘计算,这些都代表了什么,又能给我们的生活带来什么巨大的改变么?抉择之时已至,能够走向未来的真的只有一个吗? "没有什么能够阻挡,你对自由的向往....&qu ...
- Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0
在用Navicat for MySQL远程连接mysql的时候,出现了 Lost connection to MySQL server at ‘reading initial communicatio ...
- 「查缺补漏」巩固你的RocketMQ知识体系
Windows安装部署 下载 地址:[https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.5.2/rocketmq-all-4.5.2-bin- ...