findindex方法_内置对象和Array方法

    先来搞内置对象。

实际上这么说不考究,我们只能说是当代码开始执行的时候,全局上下文会存在的内置对象。有两个,Global和Math。

其中Global在大多数情况下我们没有办法直接访问的,js规定它是一种兜底对象,我们在全局作用域上定义的所有变量和函数都会变成它的属性,包括isNaN( ),parseInt( )等。所以我们先不去做研究。

    接下来到了Math。

Math

    Math的功能是保存数学公式,信息和计算。

Math对象的部分属性:

属性说明
Math.E自然对数的基数e的值
Math.LN1010为底的自然对数
Math.LN22为底的自然对数
Math.LOG2E以2为底e的对数
Math.LOG10E以10为底e的对数
Math.PIπ的值
Math.SQRT22的平方根

Math对象的部分方法:

    min( )max( )

    返回参数中的最小值/最大值

var min = Math.min(1,2,3,4);console.log(min);  // 1
var max = Math.max(1,2,3,4);console.log(max);  // 4

舍入方法

Math.ceil( );向上取整
Math.floor( ) ;向上取整
Math.round( ) ;四舍五入
Math.fround( );最接近的单精度(32位)

绝对值

var abs =  Math.abs(-2);console.log(abs);  // 2

次方

var pow = Math.pow(2,3);console.log(pow);  // 16;

    操作符**也可以计算平方,上述代码写成var pow = 2**3; 同样是可以的。

随机数

    Math.random( );

    返回值为[0,1)中的一个随机值。

可选随机数的方法

function random(min, max) {var num = max - min + 1;return Math.floor(Math.random() * num + min);}

    如果为了加密而使用随机数(需要高不确定性),请使用:

    window.crypto.getRandomValues( );

然后我们来搞Array方法


Array方法

一、创建数组

1、构造函数创建数组:

 var arr = new Array();

如果我们在构造函数中传入一个值:

var arr = new Array(10);

此时arr的length为10。

如果我们在构造函数中传出多个值:

var arr = new Array(10,20,30);

此时arr的length为3。

总结一下:

    如果在使用构造函数创建数组的时候给构造函数传入了值。

    那么当只有一个值且是数值的时候,会指定字符串长度;

    当值是其他类型的时候,会创建一个包含该指定值的数组;

    当是数值但是值有多个的时候,还是创建包含指定值的数组。

补充:

    使用Array构造函数的时候可以省略new。

2、数组字面量

var arr1 = [];var arr2 = [1,2,3,4];

注意:

    在数组最后一个元素后边加逗号会被省略。

    使用字面量创建数组的时候不会调用Array构造函数。

3、Array构造函数的静态创建函数的方法:from( )和of( )

    from( )

    Array.from( )一共可以接收三个参数。

    第一个参数是类数组对象(任何可迭代的结构)或有一个length属性和可索引元素的结构。

例子:将字符串拆分成单字符数组

var arr = Array.from("Hello");console.log(arr);  

    第二个参数是映射函数参数(可选)

var arr1 = [1, 2, 3, 4]var arr2 = Array.from(arr1, function (x) {    return x = x ** 2;});console.log(arr2);

    打印结果是[1,4,9,16];

    第三个参数是用于指定映射函数中this的值。

    of( )

    Array.of( )可以把一组参数转换成数组。

var arr = Array.of(1, 2, 3, 4);console.log(arr);

    打印结果是[1,2,3,4];

二、数组空位

    假如我们这样创建了数组:

var arr = [,,,,,];

    那么此刻arr的length为5,arr的每个元素的内容为undefined。

    我们只是知道可以这么做就好了。

    因为很多方法对数组空位的解决方法不一样。

    map()会跳过空位置,join()视空位置为空字符串。

    因为它行为的不一致所以在实践中尽量避免使用。

三、数组索引

    数组索引值从0开始。

    数组的最大索引始终是length-1;

    所以我们可以用arr[length]来为数组添加元素。

四、检测数组

    两个方法

    1、关键字 instanceof——用来判断左侧对象是否是右侧类的实例。

    2、内置方法:Array.isArray( );

五、迭代器方法

    三个方法

    1、keys( );        返回数组索引的迭代器

    2、values( );     返回元素内容的迭代器

    3、entries( );    返回索引/值的迭代器

var arr = ["red", "yellow", "pink"];var keys = Array.from(arr.keys());var values = Array.from(arr.values());var entrues = Array.from(arr.entries());console.log(keys);console.log(values);console.log(entrues);

c068fab72796c84cdca794f250796dff.png

六、复制和填充方法

1、填充数组方法:fill( )

    该方法可以向一个已有数组中插入全部或部分的值。

var arr = [0, 0, 0, 0, 0];arr.fill(5);console.log(arr);  // [5,5,5,5,5]

该方法可以传三个参数

    **第一个参数代表填充元素;**

    第二个参数代表待填充元素索引值的最小值(包含);

    第三个参数代表待填充元素索引值的最大值。

其中,当第二个参数和第三个参数为负值时表示数组从末尾开始计算。

如果遇到以下情况填充可能会失败:

  • 索引值过低或索引值过高

  • 索引值反向:fill(2,4,2)

  • 索引值部分可用的时候,填充可用的部分

2、批量复制方法:copyWithin( )

    与fill不同,copyWithin( )会按照指定范围浅复制数组中的部分内容,然后将他们插入到指定索引开始的位置。

该方法同样可以传三个参数

    **第一个参数代表插入点的索引值;**

    第二个参数代表待复制元素索引值的最小值(包含);

    第三个参数代表待复制元素索引值的最大值。

其中,如果只写一个参数时在原索引或目标索引达到数组边界时停止。

js引擎在插值前会完整的复制范围内的值,因此复制期间不会存在重写风险。

如果遇到以下情况复制可能会失败:

  • 索引值过低或索引值过高

  • 索引值反向:fill(2,4,2)

  • 索引值部分可用的时候,复制可用的部分

七、转换方法

    不止数组,所有对象都有toLocaleString( ); toString( ); 和valueOf( ); 方法。其中:

    toLocaleString( ):    转换为具有地区特色分隔符的字符串

    toString( ):              转换为字符串

    valueOf:                  返回数组本身

var arr = [500, 1000, 1500];console.log(arr.toLocaleString());console.log(arr.toString());console.log(arr.valueOf());

c2be2c65001fa9ee0808e4a34b594e11.png

如果对转换的数组我们想使用不同的分隔符可以使用join( )方法。

    join( )方法仅有一个参数,即字符串分隔符。

八、栈方法

    栈,先进后出。我们只是模拟,JS并没有栈。

    推入:push();

    弹出:pop();

九、队列方法

    队列,先进先出。我们仍然是模仿。

    从末尾进:push();

    从开头出:shift();

    与从开头出相反的操作——从开头进:unshift();

十、排序方法

    两个。reverse( )和sort( )。

    其中reverse( )就是字面意思——反向排序。

    但是sort( )会在每一项上调用String( ),然后比较字符串来决定顺序。

    还记着吗?

"10" > "5"    // false"10" 

    所以用sort( )直接排序数值是不合适的。不过没关系,有一个方法:

arr.sort(function (a, b) {    return a - b;})

    其中 a - b 是从小到大排列

    b - a 是从大到小排列

十一、操作方法

    操作方法有很多,现在只搞三个常用的。

1、数组连接:concat()

    将参数添加到现有数组的末尾,最后返回一个新数组。

注意:不影响原数组。

2、数组截取:slice()

    该方法最多可以传入两个参数:返回元素的开始索引(包含)和结束索引(不包含)。

    如果参数只有一个,则表示返回从当前索引开始直到数组结束。

注意:不影响原数组。

3、splice()

    着重搞一下这个属性。究极强大。

    其实这个方法的主要目的是在数组中间插值的。但是有三种不同的方式使用这个方法:

  • 删除

    需要传两个参数:要删除的第一个元素的位置和要删除的元素的数量

  • 插入

    需要传三个以上的参数:开始的位置,0(要删除的元素的数量),从第三个元素开始是要插入的元素。

  • 替换

    与插入类似,需要传三个以上的参数,但是由于第二个参数代表的是要删除的元素的数量,所以我们可以删除之后再插入新值。

提示:返回值是删除的元素

十二、搜索和位置方法

    一共有五个,先说三个,剩下两个先知道就可以了。

    搜索方法:

    indexOf( )、lastIndexOf( )和includes( )

这三种方法都可以传两个参数:要查找的元素和一个可选的其实搜索位置。

    其中第一个和第三个是顺序遍历,第二个是倒叙遍历。

    其中第一个和第二个的返回值是查找到的元素的索引,第三个返回值是一个布尔类型,用来表示是否找到相同元素。

提示:这三种方法在比较时使用的时全等比较(===)。

    另两种方法是find( )和findIndex( )。

十三、迭代方法

迭代方法有五个:

  • every():对数组每一项都运行传入的函数,如果对每一项函数都返回true,则这个方法返回true。

  • some():对数组每一项都运行传入的函数,如果有一项函数返回true,则这个方法返回true。

  • filter():对数组每一项都运行传入的函数,函数返回true的项会组成数组之后返回。

  • map():对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。

  • forEach():对数组每一项都运行传入的函数,没有返回值。

    用forEach( )举例子:

var arr = [0, 10, 10, 10, 20];var max = arr[1];arr.forEach(function(item, index, arr) {  if (item > max) {    max = item;  }});console.log(max);  // 20

    能看懂且会用最好,不会用没关系,看不懂就太妙了,后边九成会细讲。

    现在阶段讲的新东西有点多,这里就先不拓展了,先知道有这些方法就够了,后边细讲的时候不会觉得突然。 


    好累。。没有废话了。。睡觉。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 方法的作用是什么? js数组find方法和findindex方法都是用来查找数组中符合条件的元素方法。 find方法返回第一个符合条件的元素,如果没有符合条件的元素则返回undefined。 findindex方法返回第一个符合条件的元素的索引,如果没有符合条件的元素则返回-1。 两个方法的区别是返回值不同,一个返回元素,一个返回索引。 ### 回答2: JavaScript中的数组提供了许多内置方法,其中包括find方法和findIndex方法。这两种方法可以用来查找数组中的元素,但它们具有不同的用途和功能。 首先,让我们来了解一下find方法。该方法可以在数组中查找符合特定条件的第一个元素,并返回该元素的值。以下是find方法的语法: ``` array.find(function(element, index, array) { //条件判断语句 }); ``` 该方法接受一个回调函数作为参数,该回调函数的作用是对数组中的每个元素进行条件判断。如果回调函数返回值为真,则该元素符合条件,find方法将停止遍历并返回该元素的值。如果遍历完整个数组都没有符合条件的元素,find方法将返回undefined。 使用find方法的一个示例是查找数组中的第一个奇数。可以使用以下代码: ``` const arr = [2, 4, 1, 6, 8, 3]; const odd = arr.find(num => num % 2 === 1); console.log(odd); //输出1 ``` 接下来,我们来了解一下findIndex方法。这个方法的功能类似于find方法,但不同的是它返回的是符合条件的元素在数组中的索引,而不是返回该元素的值。以下是findIndex方法的语法: ``` array.findIndex(function(element, index, array) { //条件判断语句 }); ``` 同样,该方法也接受一个回调函数作为参数。如果回调函数返回值为真,则该元素符合条件,findIndex方法将返回该元素在数组中的索引。如果遍历完整个数组都没有符合条件的元素,findIndex方法将返回-1。 对于上面查找数组中的第一个奇数的示例,可以很容易地修改为查找数组中第一个奇数的位置。以下是代码: ``` const arr = [2, 4, 1, 6, 8, 3]; const oddIndex = arr.findIndex(num => num % 2 === 1); console.log(oddIndex); //输出2 ``` 总的来说,find方法和findIndex方法是非常有用的数组方法,可以帮助我们快速找到想要的数组元素。如果需要查找元素的值,使用find方法,如果需要查找元素的索引,使用findIndex方法。 ### 回答3: JS数组中的find()和findIndex()方法是ES6新增的数组方法,它们提供了一种比较简单的查找元素的方式。 find()方法用来查找数组中符合指定条件的第一个元素,并返回该元素的值,如果数组中没有符合条件的元素,则返回undefined。它的语法如下: array.find(function(item, index, array){ // 操作,返回boolean值 }, thisArg); 其中,function(item, index, array)是一个回调函数,用来对数组的每个元素进行处理的。它可以接收三个参数,分别代表当前元素的值、当前元素的索引以及数组本身。不过第二个参数thisArg是可选的,表示指定回调函数中this指向的对象,默认为undefined。 下面是使用find()方法的示例代码: let arr = [1, 2, 3, 4, 5]; let result = arr.find(function(item){ return item > 3; }); console.log(result); // 4 findIndex()方法与find()方法类似,也是根据指定条件查找数组中符合条件的第一个元素,但它返回的是符合条件的元素在数组中的索引,如果找不到则返回-1。它的语法如下: array.findIndex(function(item, index, array){ // 操作,返回boolean值 }, thisArg); 其中,回调函数的用法和find()方法一样,只是它的返回值是元素的索引。 下面是使用findIndex()方法的示例代码: let arr = [1, 2, 3, 4, 5]; let index = arr.findIndex(function(item){ return item > 3; }); console.log(index); // 3 以上就是JS数组中find()和findIndex()方法的详细介绍,它们在实际开发中经常用来查询数组中符合条件的元素,可以大大提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值