ES6中Array.find()和findIndex()函数的用法详解

ES6为Array增加了find(),findIndex函数。

find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined。

findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。

他们的都是一个查找回调函数。

[1, 2, 3, 4].find((value, index, arr) => {
})

查找函数有三个参数。

value:每一次迭代查找的数组元素。

index:每一次迭代查找的数组元素索引。

arr:被查找的数组。

例:

1.查找元素,返回找到的值,找不到返回undefined。

const arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
var ret1 = arr1.find((value, index, arr) => {
 return value > 4
})
var ret2 = arr1.find((value, index, arr) => {
 return value > 14
})
console.log('%s', ret1)
console.log('%s', ret2)

结果:

undefined

2.查找元素,返回找到的index,找不到返回-1。

var ret3 = arr1.findIndex((value, index, arr) => {
 return value > 4
})

var ret4 = arr1.findIndex((value, index, arr) => {
 return value > 14
})
console.log('%s', ret3)
console.log('%s', ret4)

结果:

4
-1

3.查找NaN。

const arr2 = [1, 2, NaN, 4, 5, 6, 7, 8, 9, 10, 11]
var ret5 = arr2.find((value, index, arr) => {
 return Object.is(NaN, value)
})
var ret6 = arr2.findIndex((value, index, arr) => {
 return Object.is(NaN, value)
})
console.log('%s', ret5)
console.log('%s', ret6)

结果:

NaN
2

总结

以上所述是小编给大家介绍的ES6中Array.find()和findIndex()函数的用法详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

时间: 2017-09-15

ES6数组的扩展详解

本文实例讲述了ES6数组的扩展.分享给大家供大家参考,具体如下: 1. Array.from() Array.from()将类数组(array-like)对象与可遍历的对象转化为数组并返回. 下面是一个类数组 let arr = { '0':'a', '1':'b', '2':'c', length:3 }; ES5我们可能都会这样写: var arr1=[].slice.call(arr); ES6可以把一个类数组转化为一个真正的数组 var arr2=Array.from(arr) 实际应用

ES6新特性之数组、Math和扩展操作符用法示例

本文实例讲述了ES6新特性之数组.Math和扩展操作符用法.分享给大家供大家参考,具体如下: 一.Array Array对象增加了一些新的静态方法,Array原型上也增加了一些新方法. 1.Array.from 从类数组和可遍历对象中创建Array的实例 类数组对象包括:函数中的arguments.由document.getElementsByTagName()返回的nodeList对象.新增加的Map和Set数据结构. //in ES6中 类数组转换为数组的方法 let itemElement

ES6新特征数字、数组、字符串

一.let和const let:声明变量,只在声明的块级作用域(大括号)内起作用[注意:let不向var那样可以自动提升] 如果一个区块内存在let或const命令,该区块就被解析成封闭作用域(暂时性死区,必须先声明再使用) [所以一个区块内只要有let,就可能存在死区,就可能会出现变量声明使用顺序的错误] let为JavaScript增加了块级作用域 ES6中在块级作用域声明的函数不能在外部被引用,但在ES5中可以(ES5中的函数声明可以提升到全局作用域或函数作用域头部,ES6中不行,但是ES

ES6中数组array新增方法实例总结

本文实例讲述了ES6中数组array新增方法.分享给大家供大家参考,具体如下: ●find : let arr=[1,2,234,'sdf',-2]; arr.find(function(x){ return x<=2; })//结果:1,返回第一个符合条件的x值 arr.find(function(x,i,arr){ if(x<2){console.log(x,i,arr)} })//结果:1 0 [1, 2, 234, "sdf", -2],-2 4 [1, 2, 23

ES6中的数组扩展方法

form 转化为真正的数组 先说一下使用场景,在Js中,我们要经常操作DOM,比如获取全部页面的input标签,并且找到类型为button的元素,然后给这个按钮注册一个点击事件,我们可能会这样操作: var inputObjs=document.getElementsByTagName('input'); for(var i=0;i<inputObjs.length;i++){ if(inputObjs[i].type==='button'){ inputObjs[i].onclick=func

ES5 ES6中Array对象去除重复项的方法总结

输入例子 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq() 输出例子 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a'] 分析 题目要求给 Array 添加方法,所以我们需要用到 prototype.数组去重本身算法不是很难,但是在 JavaScript 中很多人会忽视 NaN 的存在,因为在 JS 中 NaN !== NaN .但是在去重中我们

基于ES6 Array.of的用法(实例讲解)

ES6为Array增加了of函数用已一中明确的含义将一个或多个值转换成数组. 因为,用new Array()构造数组的时候,是有二意性的. 构造时,传一个参数,表示生成多大的数组. 构造时,传多个参数,每个参数都是数组的一个元素. const arr1 = new Array() const arr2 = new Array(5) const arr3 = new Array(1, 3, '白色', {p1: 'v1'}) console.log('%s', JSON.stringify(arr

ES6新特性七:数组的扩充详解

本文实例讲述了ES6新特性之数组的扩充.分享给大家供大家参考,具体如下: 1. Array.from() 1) Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map,他们都部署了iterator接口,字符串也是). let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; // ES5的写法 var arr

JavaScript学习笔记之ES6数组方法

ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国梦版本了).上一次标准的制订还是2009年出台的ES5.目前ES6的标准化工作正在进行中,预计会在14年12月份放出正式敲定的版本.但大部分标准已经就绪,且各浏览器对ES6的支持也正在实现中. ES6给数组添加了一些新特性,而这些新特性到目前为止完全可以运用到自己的业务层.在这一节中将总结有关于ES6给数组提供一些新特性的使用方法. ES6提供

ES6使用Set数据结构实现数组的交集、并集、差集功能示例

本文实例讲述了ES6使用Set数据结构实现数组的交集.并集.差集功能.分享给大家供大家参考,具体如下: Set数据结构是es6中新增的,它类似于数组,但是成员的值唯一,没有重复值. Set本身是一个数据结构,用来生成Set数据节后 Set数据结构的实例有4种遍历方法: keys():返回一个键名的遍历器 values():返回一个键值便利器 entries():返回一个键值对便利器 forEach():使用回调函数遍历每个成员 由于Set数据结构没有键名,只有键值(或者说键名和键值是同一个值),

浅谈ES6新增的数组方法和对象

es6新增的遍历数组的方法,后面都会用这个方法来遍历数组,或者对象,还有set,map let arr=[1,2,3,4,3,2,1,2]; 遍历数组最简洁直接的方法 for (let value of arr) { console.log(value);//输出1,2,3,4,3,2,1,2 } 1. 数组.map() 返回一个新的数组,es5要复制一个新的数组我们一般用循环,现在直接用map let arr=[1,2,3,4,3,2,1,2]; let newArr=arr.map((val

浅谈js常用内置方法和对象

JS内置函数不从属于任何对象,在JS语句的任何地方都可以直接使用这些函数.JS中常用的内置函数如下: 1.eval(str)接收一个字符串形式的表达式,并试图求出表达式的值.作为参数的表达式可以采用任何合法的操作符和常数.如果参数中包含JS命令,这些命令也可以被执行,就像这些命令是JS程序的一部分一样. 2.parseInt(str,n)试图从一个字符串中提取一个整数.可附加一个n整数实现返回n进制整数.如果在字符串中存在除了数字.符号.小数点和指数符号以外的字符,就停止转换,返回已有的结果.如

浅谈es6中的元编程

何为元编程? 「编写能改变语言语法特性或者运行时特性的程序」.换言之,一种语言本来做不到的事情,通过你编程来修改它,使得它可以做到了,这就是元编程. meta-programming元编程中的 元 的概念可以理解为 程序 本身."元编程能让你拥有可以扩展程序自身能力 举个例子: if (a == 1 && a == 2 && a == 3) { console.log("done"); } 怎样才能让这个条件满足,输出done.按照正常的逻辑是

浅谈jquery中的each方法$.each、this.each、$.fn.each

jquery.each 方法 方法一 $("img").each(function(i,elem){ // i 下标 从零开始, // elem == this // $(elem).toggleClass("example"); $(this).toggleClass("example"); }); 方法二 $.each([1,2,3,4],function(){ //$(this)==数组中的每一个数组(如果数组是对象,就是对象) }); 方

浅谈java 字符串,字符数组,list间的转化

1.关于java.lang.string.split xxx.split()方法可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回. 2.字符串转字符数组 String str =" aa.png,a2.png,a3.png"; String[] arrayStr =new String[]{}; arrayStr = str.split(","); 3.字符数组转list List list = java.util.Arrays.asList(array

浅谈js多维数组和hash数组定义和使用

多维数组定义 定义数组数组对象用来在单独的变量名中存储一系列的值.使用关键词 new 来创建数组对象. 一维数组定义 var myArray=new Array('a','b','c'); 或 var myArray = []; 二维数组及多维数组定义 javascript二维数组或多维数组都是通过一维数组来模拟起来. 方法1. var arr= new Array(['a','b','c'],['d','e','f']); 方法2: var arr=new Array( new Array()

浅谈java面向对象的数组化信息处理

虽然非常简单的东西,但对于一些自学的新手和前期理解的不够深的萌新来说,应该会有很大的帮助,有助于理解. 初学面向对象的时候,我想许多同学对此很纳闷.简单的问题复杂化,多此一举诸之云云. 那么往下看: package cn.bdqn.test3; import java.util.Scanner; public class Test1 { public static void main(String[] args) { //创建两个管理员对象 Admin a1 = new Admin(); a1.

浅谈fastjson的常用使用方法

如下所示: package Demo; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Vector; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; imp

浅谈java中字符串数组、字符串、整形之间的转换

字符串数组转字符串(只能通过for循环): String[] str = {"abc", "bcd", "def"}; StringBuffer sB = new StringBuffer(); for (int i = 0; i < str.length;i++) { sB.append(str[i]); } String s = sB.toString(); 字符数组转字符串可以通过下面的方式: char[] data = {"

详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()

当有人问到用来确定一个字符串是否包含在另一个字符串中有哪些方法时,我们会不假思索回答道:indexOf方法.其实,ES6 又提供了三种新方法includes().startsWith().endsWith(),也是比较好用的. indexOf方法在这里就不多说了,大家都比较熟悉,意思就是:返回给定元素在数组中第一次出现的位置,返回结果是匹配开始的位置,如果没有出现则返回-1. 下面详细介绍ES6新增的这三种方法: ①includes():返回布尔值,表示是否找到了参数字符串. 如下所示: let