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 ...
随机推荐
- EtherNet/IP 协议结构
一.Ethernet/IP 协议 将标准的TCP/IP以太网延伸 到工业实时控制并和通用工业协议(CIP)结合,将很好地帮助用户获得更加开放集成的工业自动化和信息化的整体解决方案.EtherNet/I ...
- MySQL 慢查询日志分析工具(pt-query-digest)
1. 慢查询命令: 是否开启和日志路径:show variables like '%slow_query_log%'; 最大查询时间:show variables like '%query_time% ...
- WPF使用CefSharp嵌入网页
1.点击项目应用下的管理NuGet程序包 2.在浏览中输入cefsharp-->查找 CefSharp.Wpf-->点击安装,等待安装完成 3.如果遇到一下问题将解决方案和项目都改成64位 ...
- C++—模板(2)类模板与其特化
我们以顺序表为例来说明,普通顺序表的定义如下: typedef int DataType; //typedef char DataType; class SeqList { private : Dat ...
- python迭代器Itertools
https://docs.python.org/3.6/library/itertools.html 一无限迭代器: Iterator Arguments Results Example count( ...
- 分享:使用 TypeScript 编写的游戏代码
<上篇博客>我写出了我一直期望的 JavaScript 大型程序的开发模式,以及 TS(TypeScript) 的一些优势.博客完成之后,我又花了一天时间试用 TS,用它来重构之前编写的一 ...
- Epson L4158打印机安装与配置
上周购买了一台打印.扫描.复印三合一的Epson L4158喷墨打印机,主要用于打印数学纸版笔记套图.长笛乐谱.常用软件的cheatsheet(例如,GNU/Linux命令.GNU Emacs快捷键. ...
- Useful Git Commands for me
查看Git追踪的文件 git ls-files 移除远程仓库的文件夹 git rm -r --cached some-directory git commit -m "Remove th ...
- 在.Net Framework中调用Python的脚本方法 (以VB和C#为例)
某个项目中涉及到这样一个情景: VB/C#写的原始项目要调用Python的一些方法完成特殊的操作, 那么这就涉及到了,在.Net Framework中如何调用Python的脚本方法. 具体步骤流程如下 ...
- shell中使用带密码的方式直接pg_dump和psql
数据导出 pg_dump "host=XX.XX.XX.XX port=5432 user=XXXX password=XXXX dbname=XXXXX" -t table_na ...