JavaScript笔记6-数组新方法
七.ECMAScript5关于数组的新方法
1.forEach():遍历数组,并为每个元素调用传入的函数;
举例:
1 var a = [1,2,3];
2 var sum = 0;
3 //传一个参数
4 a.forEach(function(v){
5 sum += v;
6 });
7 console.log(sum);//6
8 //传三个参数(元素值,索引,数组本身)
9 a.forEach(function(v,i,a){
10 a[i]=v+1;//为数组的各元素自加1
11 })
12 console.log(a);//[2,3,4]
2.map():将调用该函数的数组的每个元素都传入指定函数,并返回运算后的新数组;
注意:该函数不修改原数组.
举例:
1 var a = [1,2,3];
2 var b = a.map(function(x){
3 return x*x;
4 })
5 console.log(b);//[1,4,9]
3.filter():将调用该函数的数组的每个元素传入指定函数进行判定,若判定为true,则返回.最终返回一个符合指定条件(函数)的元素的集合(该集合为原数组的子集)
注:该函数会跳过稀疏数组中缺少的元素,总是返回稠密数组,利用此特性可以压缩稀疏数组.
举例1:
1 var a = [1,2,3];
2 var c = a.filter(function(x){
3 return x<3;
4 })
5 console.log(c);
举例2:
1 var a = [ ,1,null,3,4, ,];
2 console.log(a.length);//6
3 var dense = a.filter(function(){
4 return true;//过滤掉undefined
5 });
6 console.log(dense);//[1,null,3,4]
7 console.log(a);//Array(6) […, 1, null, 3, 4]未改变原有数组
8 var c = a.filter(function(x){
9 return x!=undefined && x != null;
10 });
11 console.log(c);//Array(3) [1, 3, 4]
4.every():遍历调用该方法数组的每个元素,判定是否符合指定条件(函数),全部符合则返回true;注意空数组调用时返回true;
some():遍历调用该方法数组的每个元素,判定是否符合指定条件(函数),只要有一个符合则返回true;注意空数组调用时返回false;
举例1:
1 var a = [1,2,3,4,5];
2 var b = a.every(function(x){
3 return x >0;//判定是否所有元素均大于0
4 });
5 console.log(b);//true
6 var c = a.some(function(x){
7 return x < 4; //判定是否有元素小于4
8 });
9 console.log(c);//true
举例2:空数组调用
1 var d = [];
2 console.log(d.every(function(x){
3 return x;
4 }));//true
5 console.log(d.some(function(x){
6 return x;
7 }));//false
5.reduce()和reduceRight()
使用指定的函数对数组元素进行组合,生成单个值.指定函数需要两个值(第一个是执行化简操作的函数;第二个(可选)是传递给函数的初始值)
注意:1)无第二个参数时,函数会调用数组的第一个元素作为初始值,若数组为空数组则报"类型错误"异常;
2)若数组只有一个元素,并且未提供第二个参数,则不会调用函数,只是返回该唯一元素;
举例1:
1 var a = [1,2,3,4,5];
2 //求和
3 var sum = a.reduce(function(x,y){
4 return x+y;
5 },0);
6 console.log(sum);//15
7 //求积
8 var mul = a.reduce(function(x,y){
9 return x*y;
10 },1)
11 console.log(mul);//120
12 //求最大值
13 var max = a.reduce(function(x,y){
14 return x>y?x:y;
15 },0)
16 console.log(max);//5
举例2:幂运算
1 var a = [2,3];
2 var big = a.reduceRight(function(x,y){
3 return Math.pow(y,x);
4 });
5 console.log(big);//2^3=8
6
7 var big1 = a.reduceRight(function(x,y){
8 return Math.pow(x,y);
9 });
10 console.log(big1);//3^2=9
11
6.indexOf()和lastIndexOf()
返回给定索引值的元素,lastIndexOf()从右往左搜索;若没有找到,则返回-1;
注意:该函数可接收两个参数,第一个参数为需要搜索的索引;第二个为开始搜索的位置(可选);两个参数都不为函数;
举例:定义一个函数,查找数组中所有出现的x,并返回包含所有索引的数组
1 function findall(a,x){
2 var results = []; //定义空数组,用来接收x的索引值
3 len = a.length; //搜索的最大长度
4 pos = 0; //开始搜索的位置
5 while(pos<len){
6 pos = a.indexOf(x,pos); //从pos开始搜索x
7 if(pos === -1){
8 break; //找不到就返回
9 }
10 results.push(pos);//存储索引值
11 pos = pos+1;
12 }
13 return results;
14 }
15 测试
16 var a = [1,2,3,2,4];
17 console.log(findall(a,2));//Array(2) [1, 3]
八.判定是否为数组
Array.isArray():判定是否为数组类型,是则返回true;
九.字符串可以作为只读的数组
可以使用方括号([])访问单个字符;
也可以作用charAt()方法
举例:
1 var s = test;
2 s.charAt(0);//"t"
3 s[0];//"t"
十:需求:将完全由数字组成的字符串转为数字类型,如"1345"转为1345
法一:
1 'use strict';
2 function string2int(s){
3 //将s转为字符串数组
4 var str = s.split('');
5 //调用map()将字符串数组转为数字数组
6 var arr = str.map(function(x){
7 //字符-0即可变为数字
8 return x-0;
9 })
10 //调用reduce(),将数字数组转为int类型
11 var res = arr.reduce(function(x,y){
12 return x*10+y;
13 })
14 //返回结果
15 return res;
16 }
法二:
1 'use strict';
2 var b = "1345";
3 //split():将字符串转为字符类型的数组
4 var c = b.split('');
5 //与0做减法运算,将字符类型转为数字类型
6 var d = [];
7 for(var i= 0;i<c.length;i++){
8 d[i]=c[i]-0;
9 }
10 //转为整型
11 var e = d.reduce(function(x,y){
12 return x*10+y;
13 })
14 console.log(e);
JavaScript笔记6-数组新方法的更多相关文章
- JavaScript ES6 数组新方法 学习随笔
JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...
- javascript 克隆对象/数组的方法 clone()
1 11 javascript 克隆对象/数组的方法 clone() 1 demo: code: 1 var Obj; 2 let clone = (Obj) => { 3 var buf; ...
- JavaScript中的数组Array方法
push(),pop()方法 push(),pop()方法也叫栈方法,push()可以理解成,向末尾推入,而pop()恰好相反,可以理解成从末尾移除(取得). var nums=[1,2,3,4]; ...
- ECMAScript 6中数组新方法
数组的方法 数组的的大部分方法都可以实现数组的遍历. foreach方法 实现数组的遍历 const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.forEach(fu ...
- javascript常见操作数组的方法
在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "obj ...
- JavaScript中操作数组的方法
JavaScript Array 对象 对数组操作的方法分为两种 一种是会改变原始数组的变异方法,还有一种是不会改变原始数组的非变异方法. 总结 巧记 Push() 尾部添加 pop() 尾部删除 U ...
- JavaScript中Array数组的方法
查找: indexOf.lastIndexOf 迭代:every.filter.forEach.map.somereduce.reduceRight 用法: /* 1 查找方法: * arr.inde ...
- JavaScript笔记之数组 keyword(存储和释放&堆栈 & 按值 引用)
1.数组创建及初始化 var obj=new Array(); var arr=[]; 可以延伸为长度一定的,字面量定义数组 2.堆栈 按值传递 引用类型 数组是引用类型,不是值传递, 栈:系桶自动分 ...
- javaScript中的数组迭代方法
ECMAScript5为数组定义了5个迭代方法. 每个方法都接收两个参数:要在每一项上运行的函数 和 (可选的)运行该函数的作用域对象. 传入这些方法中的函数会接收三个参数:数组项的值,该项在数组 ...
随机推荐
- Python中日志的格式化输出
import logging logfile = 'e:\\a.txt' # logging.basicConfig(filename=logfile,level=logging.INFO) # lo ...
- Spring入门第十二课
Bean的配置方法 通过工厂方法(静态工厂方法&实例工厂方法),FactoryBean 通过调用静态工厂方法创建Bean 调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当客户 ...
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用Python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误: er ...
- Lightoj1059【最小生成树】
题意: 使得所有的位置都能通向一个机场,问最小花费. 思路: 最小生成树. 本来还想标记一下没有出现过的点,其实那个数组已经解决了.==. PS:注意路比建造机场还贵?直接造机场得了? if ther ...
- UE4 c++ 创建刚体Cube
1 新建一个Actor,一会用蓝图继承这个 TCubeActor.h #pragma once #include "CoreMinimal.h" #include "Ga ...
- __stdcall
__stdcall是函数调用约定的一种,函数调用约定主要约束了两件事: 1.参数传递顺序 2.调用堆栈由谁(调用函数或被调用函数)清理 常见的函数调用约定:stdcall cdecl fastcall ...
- Solr6.7 学习笔记(01) -- 目录结构
Solr解压后的目录结构 --contrib: Solr的一些扩展 --analysis-extras: 包含一些文本分析组件及其依赖 --clustering: 包含一个用于集群搜索结果的引擎 -- ...
- 洛谷P2016 战略游戏
P2016 战略游戏 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题. 他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上放置最少数目 ...
- IT兄弟连 Java语法教程 Java语言背景
驱使计算机语言革新的因素有两个:程序设计技术的改进和计算环境的改变.Java也不例外.在大量继承C和C++的基础之上,Java还增加了反应当前程序设计技术状态的功能与精华.针对在线环境的蓬勃发展(In ...
- js实现考试随机选题
考试的时候经常用到,发在这里记录一下 基本信息包括: 学号.姓名.题号.题目名称 实现原理:给每一个题目添加一个编号,JS生成随机数,遍历每一个学生,把题目根据生成的随机数作为题目编号放入学生信息中 ...