数组API(2)
ES5中数组新增API:
1. indexOf
作用:检测当前数据是否在数组中存在;
特点:如果存在返回相对应的下标,如果不存在则返回-1;
如果数组中存在多个需要判断的这个数据,则返回最近的这个数据的下标;
可以传递两个参数,第二个参数指定查询的起始位置;
示例:
var arr = [10,20,30,40,50,30];
var index1= arr.indexOf(30);
var index2 = arr.indexOf(80);
var index3 = arr.indexOf(30,3);
console.log(index1); //结果为2
console.log(index2); //结果为-1
console.log(index3); //结果为5
2. lastIndexOf
作用:检测当前数据是否在数组中存在;
特点:如果存在返回相对应的下标,如果不存在则返回-1;
如果数组中存在多个需要判断的这个数据,则返回最后的这个数据的下标(也就是说它的查找方式是从右往左);
可以传递两个参数,第二个参数是指定查询的起始位置,然后从起始位置往左找;
示例:
var arr = [10,20,30,40,50,30];
var index1= arr.lastIndexOf(30);
var index2 = arr.indexOf(80);
var index3= arr.lastIndexOf(30,5);
console.log(index1); //结果为5
console.log(index2); //结果为-1
console.log(index3); //结果为5
3. map
作用:需要对数组中的数据做一些同一类型的操作时,可以用到map;
特点:不会改变原数组,会有一个返回值, 返回值是一个新的数组;
map中除了有一个回调以外,还有第二个参数就是用来改变this指向的,此参数选用。
回调函数中的3个参数:
item:数组中的数据
index:数组中数据的下标
array:当前遍历的数组
示例:
var arr = [10,20,30,40,50];
var newArr = arr.map(function(item,index,array){
console.log(item,index,array);//自己可以打印着看看
return item*=1.3;
})
console.log(arr); // [10,20,30,40,50]
console.log(newArr); // [ 13, 26, 39, 52, 65 ]
4. forEach
作用:遍历;
特点:没有返回值,不会改变原数组;
forEach中除了有一个回调以外,还有第二个参数 就是用来改变this指向的,此参数选用。
回调函数中的3个参数:
item:数组中的数据
index:数组中数据的下标
array:当前遍历的数组
示例:
var arr = [10,20,30,40,50];
var newArr = []
arr.forEach(function(item,index,array){
newArr.push(item*=1.3);
console.log(this);//当前this指向document,如果不改变this指向,则指向window
},document)
console.log(arr);// [10,20,30,40,50]
console.log(newArr);//[ 13, 26, 39, 52, 65 ]
注:forEach和map是不能被终止的 也就是说return 和break根本不会终止它们的循环
5. filter
作用:通过某种条件对数据进行过滤筛选;
特点:返回一个匹配过滤条件的新数组,不会改变原数组;
filter中除了有一个回调以外,还有第二个参数 就是用来改变this指向的,此参数选用。
回调函数中的3个参数:
item:数组中的数据
index:数组中数据的下标
array:当前遍历的数组
示例:
var arr = [10,20,30,40,50];
var newArr = arr.filter(function(item,index,array){
console.log(this);//当前this指向document,如果不改变this指向,则指向window
return item>30;
},document)
console.log(arr);// [10,20,30,40,50]
console.log(newArr);//[ 40,50 ]
6. reduce
作用: 累积器;
特点:返回一个匹配过滤条件的新数组,不会改变原数组;
回调函数中的4个参数:
init:初始值,值为reduce函数的第二个参数
current: 为数组中的当前值, 第一次为数组中下标为0的这个值 第二次为下标1的值 .....
index:数组中数据的下标
array:当前遍历的数组
示例:
var arr = [10,20,30,40,50];
var sum = arr.reduce(function(init,current){
return current-init;
},0)
console.log(sum);//30 ;sum的计算过程: sum=50-(40-(30-(20-(10-0))));
7.reduceRight
作用同reduce,唯一的不同是,reduceRight 是从右至左遍历数组的元素。
8.some
作用: 测试数组中是否有某元素通过 callback 函数测试;
特点:如果 callback 函数返回值为 true 则表示通过测试(有一个通过测试,则为真);
回调函数中的3个参数:
v:数组中的数据
i:数组中数据的下标
arr:当前遍历的数组
let arr=[1,3,6,4,2]
let someRes = arr.some((v, i, arr) => {
return v > 5
})
console.log(someRes) ;// true
9. every
作用: 测试数组中是否全部元素通过 callback 函数测试;
特点:如果 callback 函数返回值为 true 则表示通过测试(全部通过测试,则为真);
回调函数中的3个参数:
v:数组中的数据
i:数组中数据的下标
arr:当前遍历的数组
let arr=[1,3,6,4,2]
let everyRes = arr.every((v, i, arr) => {
return v > 5
})
console.log(everyRes) ;// false
数组API(2)的更多相关文章
- javascript_core_10之继承与数组API
1.现有两对象间的继承:Object.setPrototypeOf(child,father): 2.基于现有父对象创建子对象:var child=Object.create(father,{新属性} ...
- javascript_core_04之数组API
1.数组API——splice: ①删除:var deletes=arr.splice(starti,n):删除starti位置开始的n个,返回删除元素组成的临时数组: ②插入:arr.splice( ...
- 数组Array、数组API
1.数组:批量管理多个数据的存储空间. 数组的作用:现实中,批量管理多个数据都是集中分组存放,良好的数据结构,可极大提高程序的执行效率! 优点:方便查找 2.创建数组:(4种方式) (1)var 变量 ...
- JavaScript中对数组和数组API的认识
JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...
- 数组API汇总
数组API汇总 Javascript数组API: 1.将数组转化为字符串:2种: 1.var str=String(str); 将数组转化为字符串并分隔每个元素; var arr=[1,2,3]; ...
- 数组Api .map()的使用
之前并没有过多的使用过这个Api,在此记录下对其的理解,方便以后多多使用. 首先是对map的说明: var mappedArray = array.map(callback[, thisObject] ...
- Javascript之高级数组API的使用实例
JS代码中我们可以根据需求新建新的对象解决问题的同时,也有一些常用的内置对象供我们使用,我们称之为API,本篇文章只是对数组部分进行了练习. 例一:伪数组,不能修改长短的数组(所以没办法清零),可以修 ...
- js 数组api
Javascript Array API JS数组对象提供了很多API方法,要用到的朋友可以查阅哈,如有错误欢迎指正. /** * Created by Administrator on 2017 ...
- js手写数组Api--模拟实现常见数组Api
数组的API经常用,但是api的内部实现还没研究过,于是就研究学习了下. 原文地址: https://www.cnblogs.com/yalong/p/11606865.html 数组的API的具体使 ...
随机推荐
- Mex混合编程专题一:Mex环境搭建
使用Matlab时间长了,难免会碰到使用mex文件的经历,不管是别人的还是自己的,就比如MatConvNet(http://www.vlfeat.org/matconvnet/)使用了混合编程的技术实 ...
- python中zip()函数基本用法
zip()函数接受一系列可迭代对象作为参数,将不同对象中相对应的元素打包成一个元组(tuple),返回由这些元组组成的list列表,如果传入的参数的长度不等,则返回的list列表的长度和传入参数中 ...
- redis学习--Hashes数据类型
本文转自:http://www.cnblogs.com/stephen-liu74/archive/2012/03/19/2352932.html 一.概述: 我们可以将Redis中的Hashes类型 ...
- linux命令学习(8):mv命令
版权声明更新:2017-05-12博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 2. ...
- 使用Excel制作万年历(日历可A4纸打印)
先来看看A4纸打印效果,其他功能后续继续完善中. 年份数据字典(农历节日) 农历节日表 年度 春节 元宵节 龙抬头 端午节 六月六 七月七 七月十五 仲秋节 除夕 2010年02月14日 2010年0 ...
- UML Design Via Visual Studio-Sequence Diagram
本文主要介绍在Visual Studio中设计时序图,内容如下: 何时使用时序图 时序图元素介绍 条件.循环在时序图中的使用 直接通过代码生成时序图 一.何时使用时序图 当要查看单个用例内若干对象的行 ...
- asp.net异常处理和错误页配置
最近做一个项目,直接拷贝了前辈写的程序,结果报错了查了半天都没查出原因,也看不出哪里报错,最后发现有一个错误被try...catch了,所以我们做项目的时候一般不需要try...catch. 假设所有 ...
- Excel特殊格式的列
1.根据前两列显示天时分格式,算出所需时间列的内容=DAY(O2-N2)&"天"&HOUR(O2-N2)&"小时"&MINUTE ...
- 自己写的基于java Annotation(注解)的数据校验框架
JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方 ...
- Python循环-break和continue
break用于完全结束一个循环,跳出循环体,执行循环后面的语句 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" count = ...