Array.find()和Array.findIndex()
ES6新增的两个方法,根据回调函数返回作为判断依据,按照数组顺序进行遍历,符合条件(为真)时find()返回该值、findIndex()返回下标。
1.语法
arr.find(callback[, thisArg])
arr.findIndex(callback[, thisArg])
- callback为回调函数,有三个参数:value(数组遍历到的当前值)、index(当前下标)、arr(当前数组)。
- thisArg可选,执行callback时作为this对象的值。
2.使用
我们可以简单测试一下:
var arr = [1,2,7,8,34,2,15,8];
var v = arr.find((value,index,arr) => {
return value > 10;
});
console.log('v='+v);//v=34
var i = arr.findIndex((value,index,arr) => {
return value > 3;
});
console.log('i='+i);//i=2
3.源码
根据描述我们可以大致写出这两个方法实现的代码:
Array.prototype.myfind = function(callback,THIS) {
THIS = THIS || this;
for(var i=0;i < this.length;i++){
if(callback(this[i],i,this)){
return this[i];
}
}
};
Array.prototype.myfindindex = function(callback) {
for(var i=0;i < this.length;i++){
if(callback(this[i],i,this)){
return i;
}
}
return -1;
};
//测试
var arr = [1,2,7,8,34,2,15,8];
var v = arr.myfind((value,index,arr) => {
return value > 10;
});
console.log('v='+v);//v=34
var i = arr.myfindindex((value,index,arr) => {
return value > 3;
});
console.log('i='+i);//i=2
可参考官方文档
Array.find()和Array.findIndex()的更多相关文章
- es6 --数组--Array.from() 、Array.isArray()、Array.of()、find()、findIndex()、fill()、entries() 、keys() ,values()
将两类对象转为真正的数组 Array.from()方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Se ...
- Array.prototype.slice && Array.prototype.splice 用法阐述
目的 对于这两个数组操作接口,由于不理解, 往往被误用, 或者不知道如何使用.本文尝试给出容易理解的阐述. 数组 什么是数组? 数组是一个基本的数据结构, 是一个在内存中依照线性方式组织元素的方式, ...
- Array.length vs Array.prototype.length
I found that both the Array Object and Array.prototype have the length property. I am confused on us ...
- sklearn中报错ValueError: Expected 2D array, got 1D array instead:
from sklearn.linear_model import LinearRegression lr = LinearRegression() print(tr_x.shape,tr_y.shap ...
- From Ruby array to JS array in Rails- 'quote'?
From Ruby array to JS array in Rails- 'quote'? <%= raw @location_list.as_json %>
- ES6数组的扩展--Array.from()和Array.of()
一. Array.from() : 将伪数组对象或可遍历对象转换为真数组 1.何为伪数组 如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,语法上称为"类 ...
- Array.of()和Array()区别
Array.of方法用于将一组值,转换为数组. Array.of(3, 11, 8) // [3,11,8] Array.of(3) // [3] Array.of(3).length // 1 这个 ...
- [Python] Indexing An Array With Another Array with numpy
NumPy Reference: Indexing Integer array indexing: Select array elements with another array def index ...
- JavaScript Array vs new Array区别
规范说明 When Array is called as a function rather than as a constructor, it creates and initialises a n ...
- 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:
决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom ...
随机推荐
- Unity中锚点的动态设置
问题背景 在做签到系统时,需求给的效果图如下 效果图像这样,中间是模型,周围其他是签到框这样的布局,我想动态生成各个动态框,涉及到一个定位问题,锚点的设置(动态去设置每个item的位置) 实现方法 S ...
- IDEA适合的插件
一:安装方法 在线安装 二. 官网插件地址 http://plugins.jetbrains.com/ 三.常用插件 一. ) Alibaba Java Coding Guidelines ...
- ubuntu下 将证书导入java的cacerts证书库
首先,说下java的cacerts证书库: JAVA_HOME目录下的jre的cacerts 主要的步骤有4个: 生成证书 导出证书 导入证书 生成证书(此处CN的值为localhost或者你想设置的 ...
- Centos6.5系统关闭防火墙
关闭Centos6.5系统防火墙步骤: 1.命令:service iptables stop //停止正在运行的防火墙服务 2.命令:chkconfig iptables off //永久关闭防火墙 ...
- Codeforces 581F Zublicanes and Mumocrates 树形dp
Zublicanes and Mumocrates dp[ i ][ j ][ k ] 表示 以 i 为根的子树, 占领 i 的 是 j 并且第一个人占了 i 子树的 k 个叶子节点的最小值. 然后随 ...
- Windows10远程报错:由于CredSSP加密Oracle修正导致远程失败
解决方案:Windows 10 家庭版,没有 gpedit.msc,只能修改本地电脑的注册表,在本地“运行”输入: regedit 按以下目录进入:HKEY_LOCAL_MACHINE\Softw ...
- KaliLinuxNetHunter教程刷入第三方Recovery与开始刷机
KaliLinuxNetHunter教程刷入第三方Recovery与开始刷机 2.刷入第三方Recovery(即TWRP) TWRP(TeamWin Recovery Project)是一款XDA大神 ...
- C# 串口操作系列(5)--通讯库雏形
C# 串口操作系列(5)--通讯库雏形 标签: 通讯c#数据分析byteclassstring 2010-08-09 00:07 21378人阅读 评论(73) 收藏 举报 分类: 通讯类库设计(4 ...
- 展开被 SpringBoot 玩的日子 《 二 》 WEB 开发
上篇文章介绍了Spring boot初级教程 :< spring boot(一):入门篇 >,方便大家快速入门.了解实践Spring boot特性:本篇文章接着上篇内容继续为大家介绍spr ...
- 【C语言编程练习】5.12 兔子产仔问题
1. 题目要求 把一对新生的兔子关在屋子里,已知一对两个月大的兔子以后买一个月可以生一对小兔子,而这一对心生的小兔子初生两个月以后才可以生小兔子,假如一年内没有死亡,一年可以繁殖成多少对? 2. 题目 ...