精华内容
下载资源
问答
  • js数组查找方法 find() findIndex() ヤッハロー、Kaiqisanすうう、一つふつうの学生プログラマである,今天继续讲讲数组查询方法,,这俩方法更加适合于数组。 没错,就是数组专用的方法 find(callback, thisVal) : ...

    js数组查找方法 find() findIndex()

    ヤッハロー、Kaiqisanすうう、一つふつうの学生プログラマである,今天继续讲讲数组查询方法,,这俩方法更加适合于数组。

    没错,就是数组专用的方法

    find(callback, thisVal) : 自动迭代,查找自己在数组中想要的成员,所有数据类型的成员都可以查找。第一个参数是回调函数,里面填写筛选的条件,第二个参数表示执行回调时用作this 的对象。(后面会详细解释第二个参数),这个方法有返回值,为符合条件的数组成员,需要相应的参数接收。如果没有符合条件的成员,就返回undefined(不返回)。

    let arr = ['usa', 'usb', 'usc', 'use']
    // 回调支持三个参数,分别为 当前迭代的成员,当前迭代成员的下标,迭代数组
    let res = arr.find((item, index, arr) => { 
        console.log(item, index, arr)
        return item === 'usc'
    }) 
    console.log(res)
    
    // ---------输出结果
    // 'usa' 0 ['usa', 'usb', 'usc', 'use']
    // 'usb' 1 ['usa', 'usb', 'usc', 'use']
    // 'usc' 2 ['usa', 'usb', 'usc', 'use']
    // 'usc'
    
    /* 也可以找对象 */
    let arr = [{name: 'kaiqisan', id: 10001}, {name: 'tom', id: 10002}, {name: 'jimy', id: 10003}, {name: 'john', id: 10004}]
    let res = arr.find(item => item.name === 'tom') // 箭头函数简写(只有箭头函数可以)
    console.log(res);
    
    // ----------输出结果 
    // {name: 'tom', id: 10002}
    

    这个方法的基本的使用方法已经讲清楚了,至于怎么使用, 就全靠大家的想象力了(不是),再根据实际的情况合理挑选这个方法。

    现在我们来详细讲一下这个第二个参数有什么左右,今天在搜集资料的时候,发现网上关于这个第二个参数的资料是少得可怜,只有MDN和菜鸟官网还勉强有简单的文字讲解,但是,光光有文字,没有例子,大伙看了还是会一知半解,即使理解了,也不会有太深的印象,今天我就简单说明一下这个第二个参数的工作原理把。

    经过实践之后,我发现这个参数是为了ES5语法准备的,因为ES5无法把callback书写成箭头函数,只能写成一般的函数,

    // ES6语法
    arr.find((item) => { 
        // xxx
    }) 
    
    // ES5语法
    arr.find(function(item) {
        // xxx
    })
    

    再看一眼我前面对第二个参数做出的表述----第二个参数表示执行回调时用作this 的对象,有时候,这个find方法会被直接使用于别的的函数内

    function app() {
        
        arr.find(function(item) {
        // xxx
    	})
    }
    

    首先,我们需要理解什么是this,这里就不详细展开解释,一句话来说就是 this的最终指向的是那个调用它的对象。在上面代码所示的情况下,如果您还是要执意在回调函数内使用this的话,由于find内部的回调函数并没有被哪个对象调用,所以它指向的是window,这可能会造成一些错误。所以第二个参数会指定一些您希望传入的并被find内部回调函数执行的参数。

    function app() {
        var arr = [{ uid: 1, name: 'kaiqisan' }, { uid: 2, name: 'tom' }, 
                   { uid: 3, name: 'john' }, { uid: 4, name: 'kitty' }]
        var res = arr.find(function(item) {
            return item.uid === this.uid // this.uid就是3
        }, {uid: 3})
        console.log(res)
    }
    app()
    // 结果为 { uid: 3, name: 'john' }
    

    当然这里只是举个例子,使用了静态的参数,大家在实际情况中,在第二个参数填入 this , 从而达到箭头函数的效果,自动继承了父元素的this指针。

    但是现在ES6都出来了,推荐大家直接使用箭头函数,避免更多的麻烦,需要注意的就是如果使用了ES6的箭头参数之后,再使用这个第二个参数的话,它就会失效,就是因为箭头函数自动帮您继承父对象的this指针了。这个第二个参数留给不得不使用ES5的时候使用(浏览器太辣鸡不支持ES6)

    findIndex(callback, thisVal): 和find方法唯一不同的就是这个方法返回的是数组符合条件的成员下标而不是符合条件的成员,如果没有符合条件的成员,就返回**-1**。

    let res = ['a', 'b', 'c'].findIndex(item => {
        return item === 'b'
    })
    console.log(res) // 1
    

    注意点

    上述俩方法只能查找数组成员,不能查找字符串的字符,否则必报错。字符串那么多查询方法,随便挑一个它不香吗?

    展开全文
  • JS数组查找元素常用方法总结indexOf(value,start)includes(value,start)find(fun,obj) 不推荐findIndex(fun,obj) 不推荐关键字in 不推荐不推荐find findIndex in的原因 indexOf(value,start) 返回元素所在下标 不...

    indexOf(value,start)

    返回元素所在下标 不存在返回-1
    value:查找元素
    start:开始查找的位置下标 默认为0 当start为负数时表示从该负数对应的下标元素向后查找 (数组最后一位元素的下标用负数表示为-1 倒数第二位元素表示为-2…以此类推)
    例子:
    在这里插入图片描述

    includes(value,start)

    判断元素是否存在 返回true/false
    value:查找元素
    start:开始查找的位置下标 默认为0 当start为负数时表示从该负数对应的下标元素向后查找 (数组最后一位元素的下标用负数表示为-1 -2对应倒数第二位元素…一次类推)
    例子:
    在这里插入图片描述

    find(fun,obj) 不推荐

    返回第一个符合条件的数组成员 没有返回undefined
    fun:回调函数 参数 value:当前元素 index:当前元素下标 array:数组
    obj:指定回调函数的对象(可不传)
    例子:
    在这里插入图片描述

    findIndex(fun,obj) 不推荐

    返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
    例子:
    在这里插入图片描述

    关键字in 不推荐

    判断元素是否存在于数组/对象 返回true/false
    例子:
    在这里插入图片描述

    不推荐find findIndex in的原因

    会把Number和String相互转换
    在这里插入图片描述

    array.findIndex(function(value,index,array){
        return value == '7'
    })
    //6
    
    展开全文
  • js数组查找方法总结

    2020-05-13 17:39:59
    1,indexOf() let arr = [1, 2, 3, 4, 5, 6]; arr.indexOf(7) //-1 arr.indexOf(6) //5 要检索的字符串值出现返回下标,没有出现返回 -1 2,includes() let arr = [1, 2, 3, 4, 5, 6]; arr.includes(7) //false arr...

    1,indexOf()

    let arr = [1, 2, 3, 4, 5, 6];
    arr.indexOf(7)  //-1
    arr.indexOf(6)  //5
    

    要检索的字符串值出现返回下标,没有出现返回 -1

    2,includes()

    let arr = [1, 2, 3, 4, 5, 6];
    arr.includes(7)  //false
    arr.includes(6)  //true
    

    是否包含一个指定的值,如果是返回 true,否则false

    3,filter()

    let arr = [1, 2, 3, 4, 5, 6];
    let find=arr.filter(function(item){
    	return item%2===0
    })
    console.log(find)	//[2, 4, 6]
    

    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,不会对空数组进行检测,不会改变原始数组。

    4,find()、findIndex()

    let arr = [1, 2, 3, 4, 5, 6];
    let find1=arr.find(function(item){
    	return item==3
    })
    console.log(find1)	//3
    let find2=arr.findIndex(function(item){
    	return item==3
    })
    console.log(find2)	//2
    

    find()直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined,findIndex()返回该成员的下表

    展开全文
  • js数组查找一个目标元素方法

    万次阅读 2019-09-11 14:29:58
    假设现有一个数组为a[2,4,5,-5,6,3] 使用find()方法查找数组中小于0的第一个成员 ...使用findIndex()方法查找数组中小于0的第一个成员的位置 a.findIndex( (n)=> n<0 ) 得到的值为 3 ...

    假设现有一个数组为a[2,4,5,-5,6,3]
    使用find()方法查找数组中小于0的第一个成员

    a.find( (n)=> n<0 ) 
    

    得到的值为 -5


    使用findIndex()方法查找数组中小于0的第一个成员的位置

    a.findIndex( (n)=> n<0 ) 
    

    得到的值为 3


    使用includes()判断一个数组是否含有一个值

    [1,2,3].includes(2)
    

    返回true

    展开全文
  • 使用 Arrays 类的 binarySearch() 方法可以实现数组查找,该方法可使用二分搜索法来搜索指定数组,以获得指定对象,该方法返回要搜索元素的索引值。 binarySearch() 方法有多种重载形式来满足不同类型数组查找...
  • ES6 对象数组查找某一个对象

    万次阅读 2018-11-29 11:13:51
    查找数组特定元素需要用到的方法就是findIndex()。 用法与定义 findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。 findIndex() 方法为数组中的每个元素都调用一次函数执行: 当...
  • C# 字符串 数组 IndexOf 方法

    千次阅读 2020-01-06 11:46:49
    C#中数组和字符串都有IndexOf 方法。 String.IndexOf 和 Array.IndexOf 返回值都为int类型,没找到返回值都为-1. 1.String.IndexOf 方法从左到右查找子串在母串中的索引值。 int []arr = new int[3]{5, 8, 9}; ...
  • java数组查找

    千次阅读 2015-07-16 18:38:44
    数组元素查找: 1、普通数组元素查找 2、二分查找 3、面试题:二分查找法运用 4、用java内部函数Arrays.binarySearch数组二分查找,导入模块 import java.util.*; */ class Arrayelementfind_1  { public static ...
  • indexOf()、lastIndexOf()方法相同点: 都接收两个参数————要查找的项、要...lastIndexOf():从数组末尾向前查找下面仅以indexOf()为例(lastIndexOf()类似),如下:var str = 'hellohelloworlda'; var substr1
  • 如何进行数组查找

    千次阅读 2019-01-04 20:59:55
    使用java.util.Arrays类的binarySearch()方法可以实现数组查找。 binarySearch(Object[] a, Object key) a:要搜索的数组。 key :要搜索的值。 如果key包含在数组中,则返回搜索值的索引;否则,返回 -1; @Test ...
  • 以前用indexOf()较多.es7新增了includes()方法.下面看一下它的用法以及和indexOf的区别.  1.indexOf()用法: 直接打点调用,括号参数传需要匹配的项.如果数组中有这一项,返回此项的索引值.没有返回 -1;  2. ...
  • JS实现数组查找

    千次阅读 2020-05-11 17:59:35
    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>密码</title> </head> <body>... function ArrayIndexOf(arr,value){ for(var i =
  • indexOf 方法数组开头(位置0)开始向后查找,lastIndexOf 方法则是从数组末尾向前查找。 这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回 -1。在比较第一个参数与数组中的每一项时,使用全...
  • c#数组查找元素

    万次阅读 2016-03-12 21:28:02
    包括通过查找数组中某个元素的下标(第一次出现时的下标,最后一次出现时的下标),查找某个数组中是否有某元素。
  • _.findIndex(array, [predicate=_.identity]) 这个方法类似 _.find。除了它返回最先通过 predicate判断为真值的元素的 index ,而不是元...
  • 数组indexof方法做搜索功能

    千次阅读 2018-01-02 15:35:47
    onSearch: function ...indexOf ( this . formItem . search ) > - 1 if ( results ) { searchdata . push ( element ); } }); this . formItem . fengniao_meta_data = searchdata ; },
  • 最近在做一个网站的日历签到控件,要比较两个数组里的数据并合并成一个数组,就想用IndexOf方法查找数据的位置合并数据,但是运行在IE8下数组没有IndexOf方法; /******解决IE8 数组IndexOf方法*****/ if (!...
  • Java中如果数组是无序混乱的,查找某个数字,需要顺序查找。代码如下: public static void main(String[] args) { int [] arr = {1, 5, 9, 21, 25}; int index = getIndex(arr, 10); System.out.println("...
  • 既然这个数组是有序的,我们应该尝试着用其他方法解决它,比如今天的二分查找。 令人头疼的当然是如何确定二分查找的边界了! int search(int* nums, int numsSize, int target) { int first = 0; int last ...
  • C#数组查找与排序

    千次阅读 2007-06-10 18:56:00
    数组查找对象的方法一种是查找对象,一种是查找值 1. 查找对象Person p1 = new Person("名字1", 18);Person p2 = new Person("名字1", 19);Person p3 = new Person("名字1", 20);Person[] persons ...
  • python学习之数组查找

    千次阅读 2018-08-08 00:02:30
    import numpy as np def FindIndex(source, Destina): i = 0; for iterating_var in source: if(iterating_var == Destina): return i; elif(iterating_var &lt;= Destina): ...
  • 1.我们将一个有序数组(n个元素)从i(号位置)之前放到n位置之后形成的数组为有序循环数组。 2.数组 1 2 4 5 6 7 8  的有序循环数组有  1 2 4 5 6 7 8 (元数组是位置0处的有序循环数组).  2 4 5 6 7 8 1   4 5...
  • 我们想查找一个二维数组中id==1的name的值,js好像没有提供相应的函数,这个时候只能自己写一个工具函数了,下面是方法 var data = [ {id: 1,name: "张三", sex: "男"}, {id: 2,name: "李四", sex: "男"}, {id:...
  • Js对象数组查找对象属性的值

    千次阅读 2020-03-06 09:52:33
    let students = [{name:'小明',age:9},{name:'小李',age:14},{name:'小白...let index = studens.findIndex(function(student){ retrun student.name =='小李' }) console.log(index) //2 console.log(students[ind...
  • 今天我们主要一起学习这两个方法是如何使用,又是如何查找数组项在数组中的确切位置。 indexOf()方法 indexOf()方法数组的开头(位置为0)开始向后查询。indexOf()方法返回指定数组项在数组中找到的第一索引...
  • js 查找数组重复元素方法

    万次阅读 2017-03-13 13:42:28
    第1种方法,利用sort排序找出MDN上给出的解释是,sort 排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。 尼玛,有点蒙蔽 语法: arr.sort() arr.sort(compareFunction)也就是先进行第一轮排序,排完...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 256,426
精华内容 102,570
关键字:

数组查找index方法