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()的更多相关文章

  1. es6 --数组--Array.from() 、Array.isArray()、Array.of()、find()、findIndex()、fill()、entries() 、keys() ,values()

    将两类对象转为真正的数组 Array.from()方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Se ...

  2. Array.prototype.slice && Array.prototype.splice 用法阐述

    目的 对于这两个数组操作接口,由于不理解, 往往被误用, 或者不知道如何使用.本文尝试给出容易理解的阐述. 数组 什么是数组? 数组是一个基本的数据结构, 是一个在内存中依照线性方式组织元素的方式, ...

  3. 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 ...

  4. sklearn中报错ValueError: Expected 2D array, got 1D array instead:

    from sklearn.linear_model import LinearRegression lr = LinearRegression() print(tr_x.shape,tr_y.shap ...

  5. From Ruby array to JS array in Rails- 'quote'?

    From Ruby array to JS array in Rails- 'quote'? <%= raw @location_list.as_json %>

  6. ES6数组的扩展--Array.from()和Array.of()

    一. Array.from() : 将伪数组对象或可遍历对象转换为真数组 1.何为伪数组 如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,语法上称为"类 ...

  7. Array.of()和Array()区别

    Array.of方法用于将一组值,转换为数组. Array.of(3, 11, 8) // [3,11,8] Array.of(3) // [3] Array.of(3).length // 1 这个 ...

  8. [Python] Indexing An Array With Another Array with numpy

    NumPy Reference: Indexing Integer array indexing: Select array elements with another array def index ...

  9. JavaScript Array vs new Array区别

    规范说明 When Array is called as a function rather than as a constructor, it creates and initialises a n ...

  10. 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom ...

随机推荐

  1. python单元测试框架unittest总结

    unittest.TestCase:TestCase类,所有测试用例类继承的基本类. class BaiduTest(unittest.TestCase): TestCase类的属性如下: setUp ...

  2. iOS开发之获取当前展示的VC

    /** 递归查找当前显示的VC*/ + (UIViewController *)recursiveFindCurrentShowViewControllerFromViewController:(UI ...

  3. 末学者笔记--shell编程上 2 玄

    Shell编程-变量及表达运算 [内容简列] 1. shell变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8 ...

  4. 公司外网测试服务器 redis 被攻击复盘

    最近 公司外网的测试的 redis 服务器被攻击,最开始是用 docker 搭建的 直接裸奔在外网,任何域名都可以通过 ip+6379来访问,最开始想的是测试服务器也没有啥,后面直接就被人登陆进去改了 ...

  5. 【lamba】java 8的新特性

    看到lamba表达式用起来还不错,找了几篇文章学习下: 所以结合之前两个反编译的结果可以看到,lamdba表达式运行整体思路大致如下: 1. lamdba表达式被编译生成当前类的一个私有静态方法 2. ...

  6. redis 实现

    /** * Returns a string containing the string representation of each of {@code parts}, using the * pr ...

  7. Kali Linux安装字典StarDict

     Kali Linux安装字典StarDictStartDict是国外知名的字典框架,也可以加入国内翻译工具的字典.Kali Linux软件源提供该字典框架.用户需要安装qstardict软件包和词库 ...

  8. [R]R包版本更迭【持续更新】

    由于R版本更迭,网上或旧的教材上的包可能没有在维护,或者被其他包替代. 做一个表记录碰到的一些替代方案.个人向,非完整指南. * mvpart 2014年之后不再更新,R 3.0版本后无法安装, 提示 ...

  9. 勾勾街:用最小的成本封装一个苹果IOS APP! 封装技术再度升级~

    勾勾街自上线以来,“遭到”大量群众的喜爱... 只能用遭到这个词儿,因为大家好像都被憋了很久了,哈哈哈! 我们的技术是先进的,也是首创的,但最近发现了另一个网站,把我们的技术抄走了.... 本来这个事 ...

  10. 安装JAVA jdk

      下载软件包,jdk-10.0.1_windows-x64_bin 根据提示一步步安装.安装完成之后,配置环境. 控制面板——>系统——>编辑系统变量 ​ 4. 系统变量 增加path变 ...