JavaScript中Array对象方法(4)

Array

数组是一种类列表对象,它的原型中提供了遍历和修改元素的相关操作。JavaScript 数组的长度和元素类型都是非固定的。因为数组的长度可随时改变,并且其数据在内存中也可以不连续,所以 JavaScript 数组不一定是密集型的,这取决于它的使用方式。

常用方法

flat()

会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

```JavaScript var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4]

var arr2 = [1, 2, [3, 4, [5, 6]]]; arr2.flat(); // [1, 2, 3, 4, [5, 6]]

var arr3 = [1, 2, [3, 4, [5, 6]]]; arr3.flat(2); // [1, 2, 3, 4, 5, 6]

//使用 Infinity,可展开任意深度的嵌套数组 var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]; arr4.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ```

find()

返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined

```JavaScript const array1 = [5, 12, 8, 130, 44];

const found = array1.find(element => element > 10);

console.log(found); // expected output: 12 ```

findIndex()

返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。

```JavaScript const array1 = [5, 12, 8, 130, 44];

const isLargeNumber = (element) => element > 13;

console.log(array1.findIndex(isLargeNumber)); // expected output: 3 ```

findLast()

返回数组中满足提供的测试函数条件的最后一个元素的值。如果没有找到对应元素,则返回undefined ```JavaScript const array1 = [5, 12, 50, 130, 44];

const found = array1.findLast((element) => element > 45);

console.log(found); // expected output: 130 ```

findLastIndex()

返回数组中满足提供的测试函数条件的最后一个元素的索引。若没有找到对应元素,则返回 -1。

```JavaScript const array1 = [5, 12, 50, 130, 44];

const isLargeNumber = (element) => element > 45;

console.log(array1.findLastIndex(isLargeNumber)); // expected output: 3 (of element with value: 30) ``` 这个拥有很多语法

```JavaScript // Arrow function findLastIndex((element) => { /* ... / } ) findLastIndex((element, index) => { / ... / } ) findLastIndex((element, index, array) => { / ... */ } )

// Callback function findLastIndex(callbackFn) findLastIndex(callbackFn, thisArg)

// Inline callback function findLastIndex(function(element) { /* ... / }) findLastIndex(function(element, index) { / ... / }) findLastIndex(function(element, index, array){ / ... / }) findLastIndex(function(element, index, array) { / ... */ }, thisArg)

```

findLastIndex() 方法不会改变调用它的数组,但是提供的 callbackFn 可以。findLastIndex() 处理的元素是在第一次调用 callbackFn 之前设置的。因此:

  • callbackFn 不会访问在调用 findLastIndex() 开始后才添加到数组中的任何元素。
  • 给已访问过的索引重新赋值将不会被 callbackFn 重新访问。
  • 给初始的范围外的索引赋值,其将不会被 callbackFn 访问。
  • 如果 callbackFn 更改了数组中现有的、尚未访问的元素,则其传递给 callbackFn 的值将是 findLastIndex()访问该元素索引时的值。
  • 仍然会访问已删除的元素。

使用箭头函数 ``` const fruits = ["apple", "banana", "cantaloupe", "blueberries", "grapefruit"];

const index = fruits.findLastIndex(fruit => fruit === "blueberries");

console.log(index); // 3 console.log(fruits[index]); // blueberries ```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值