打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
数组常用方法
userphoto

2022.11.22 北京

关注
数组基本操作可以归纳为 增 删 改 查。

 

需要留意的是哪些方法会对原数组产生影响,哪些方法不会。

 

## 增

 

**push、unshift、splice、concat。**

 

下面前三种是对原数组产生影响的增添方法,**第四种则不会对原数组产生影响**。

 

- push()
 
push()方法接收任意数量的参数,并将它们添加到数组末尾。返回数组的最新长度。

 

```js
let colors = [];
let count = colors.push("red", "yellow", "blue");
console.log(count); // 3
```

 

- unshift()

 

unshift()在数组开头添加任意多个值。返回数组的最新长度。

 

```js
let fruit = ["apple", "banana", "pear"];
let count = fruit.unshift("peach", "strawberry", "pineapple");
console.log(fruit); // ["peach", "strawberry", "pineapple", "apple", "banana", "pear"]
console.log(count); // 6
```

 

- splice()

 

传入三个参数,分别是开始位置、要删除的元素数量、插入的元素,**返回[]**。

 

```js
// 1 push
let fruit = ["apple", "banana", "pear"];
let removed = fruit.splice(fruit.length, 0, "a", "b");
console.log(fruit); // ["apple", "banana", "pear", "a", "b"]
console.log(removed); // []

 

// 2 unshift
let fruit = ["apple", "banana", "pear"];
let removed = fruit.splice(0, 0, "a", "b");
console.log(fruit); // ["a", "b", "apple", "banana", "pear"]
console.log(removed); // []

 

// 3 在中间 某个位置 插入数据
let fruit = ["apple", "banana", "pear"];
let removed = fruit.splice(1, 0, "a", "b");
console.log(fruit); // ["apple", "a", "b", "banana", "pear"]
console.log(removed); // []

 

```

 

- concat()

 

首先会创建一个当前数组的副本,然后再把它的参数添加到副本末尾,最后返回这个新构建的数组,不会影响原始数组。

 

```js
let arr = [1, 2, 3];
let arr2 = ["a", "b", "c"];
let newArr = [].concat(arr, arr2, ["red", "yellow", "blue", "green"]);
console.log(newArr); // [1, 2, 3, "a", "b", "c", "red", "yellow", "blue", "green"]
```

 

## 删

 

下面三种都会影响原数组,最后一项不影响原数组。

 

**pop、shift、splice、slice。**

 

- pop()

 

pop()方法用于删除数组的最后一项,同时减少数组的`length`值,返回被删除的项。

 

```js
let colors = ["red", "green", "blue", "pink"];
let item = colors.pop(); // 取得最后一项
console.log(item); // pink
console.log(colors.length); // 3
```

 

- shift()

 

shift()方法用于删除数组的第一项,同时减少数组的`length` 值,返回被删除的项。

 

```js
let colors = ["red", "green", "blue", "pink"];
let item = colors.shift(); // 取得第一项
console.log(item) // red
console.log(colors.length) // 3
```

 

- splice()

 

传入两个参数,分别是开始位置,删除元素的数量,**返回包含删除元素的数组**.

 

```js
// 4 删除从第一个位置到第二个位置的数据,中间2个数据
let fruit = ["apple", "banana", "pear"];
let removed = fruit.splice(1, fruit.length - 1, "a", "b");
console.log(fruit); // ["apple", "a", "b"]
console.log(removed); // ["banana", "pear"]

 

// 5 删除数据
let fruit = ["apple", "banana", "pear"];
let removed = fruit.splice(0, fruit.length, "a", "b");
console.log(fruit); // ["a", "b"]
console.log(removed); // ["apple", "banana", "pear"]

 

// 6 删除元素
let fruit = ["apple", "banana", "pear"];
let removed = fruit.splice(0, 1);
console.log(fruit); // ["banana", "pear"]
console.log(removed); // ["apple"]
```

 

- slice()

 

slice()用于创建一个包含原有数组中一个或多个元素的新数组,不会影响原始数组。

 

```js
let colors = ["red", "orange", "yellow", "green", "cyan", "blue", "purple"];
let colors2 = colors.slice(1); // ["orange", "yellow", "green", "cyan", "blue", "purple"] 切片:[第一个, 最后)
let colors3 = colors.slice(1, 4); // ["orange", "yellow", "green"] 切片:[第一个, 第4个)
```

 

## 改

 

即修改原来数组的内容, 常用 splice。

 

```js
// 7 第0个位置的 apple 改成 peach
let fruit = ["apple", "banana", "pear"];
let updated = fruit.splice(0, 1, "peach");
console.log(fruit); // ["peach", "banana", "pear"]
console.log(updated); // ["apple"]
```

 

## 查

 

即查找元素,返回元素坐标或者元素值。

 

- indexOf()

 

返回要查找的元素在数组中的位置,如果没有找到则返回-1。

 

```js
let colors = ["red", "orange", "yellow", "green", "cyan", "blue", "purple"];
colors.indexOf("yellow"); // 2
```

 

- includes()

 

返回要查找的元素在数组中的位置,找到返回true,否则false。

 

```js
let colors = ["red", "orange", "yellow", "green", "cyan", "blue", "purple"];
colors.includes("red"); // true
```

 

- find()

 

返回第一个匹配的元素。

 

```js
let colors = [
{color: "red", name: "a"},
{color: "orange", name: "b"},
{color: "yellow", name: "c"},
{color: "green", name: "d"},
{color: "cyan", name: "e"},
{color: "blue", name: "f"},
{color: "purple", name: "g"}
];
colors.find((element, index, array) => element.color === "cyan"); // {color: "cyan", name: "e"}
```

 

## 排序

 

数组有两个方法可以用来对元素重新排序:reverse 和 sort 。

 

- reverse()

 

顾明思议,将数组元素方向排列。

 

```js
let colors = ["red", "orange", "yellow", "green", "cyan", "blue", "purple"];
colors.reverse();
console.log(colors); // ["purple", "blue", "cyan", "green", "yellow", "orange", "red"]
```

 

- sort()

 

sort()方法接受一个比较函数,用于判断哪个值应该排在前面。

 

```js
// 1 字母
let colors = ["red", "orange", "yellow", "green", "cyan", "blue", "purple"];
colors.sort();
console.log(colors); // ["blue", "cyan", "green", "orange", "purple", "red", "yellow"]

 

// 2 数字比较
let numbers = [12, 23, 1, 2, 3, 4, 5, 6, 8, 8, 99, 54, 789, 33, 1, 22, 0];
numbers.sort();
console.log(numbers); // [0, 1, 1, 12, 2, 22, 23, 3, 33, 4, 5, 54, 6, 789, 8, 8, 99]
numbers.sort((a, b) => a - b);
console.log(numbers); // [0, 1, 1, 2, 3, 4, 5, 6, 8, 8, 12, 22, 23, 33, 54, 99, 789]
```

 

## 转换方法

 

常见的转换方法有:join。

 

- join()

 

join() 方法接收一个参数,即字符串分隔符,返回包含所有项的字符串。

 

```js
let colors = ["red", "orange", "yellow", "green", "cyan", "blue", "purple"];
console.log(colors.join("、")); // red、orange、yellow、green、cyan、blue、purple
console.log("《" + colors.join("》《") + "》"); // 《red》《orange》《yellow》《green》《cyan》《blue》《purple》
```

 

## 迭代方法

 

常用来迭代数组的方法(都不改变原数组)有如下:

 

1. some()
2. every()
3. forEach()
4. filter()
5. map()
6. reduce()

 

### some()

 

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

 

```js
let colors = ["red", "orange", "yellow", "green", "cyan", "blue", "purple"];
let someResult = colors.some((item, index, array) => item.includes("e"));
let someResult2 = colors.some((item, index, array) => {
console.log(item);
return item.includes("ell1");
});
console.log(someResult, someResult2); // true false
```

 

### every()

 

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

 

```js
let colors = ["red", "orange", "yellow", "green", "cyan-e", "blue", "purple"];
let someResult = colors.every((item, index, array) => item.includes("e"));
let someResult2 = colors.every((item, index, array) => {
console.log(item);
return item.includes("ell1");
});
console.log(someResult, someResult2); // true false
```

 

### forEach()

 

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

 

```js
let colors = ["red", "orange", "yellow", "green", "cyan-e", "blue", "purple"];
let colors2 = [];
colors.forEach((item, index, array) => {
colors2.push(item + index);
});
console.log(colors2);
/*
['red0', 'orange1', 'yellow2', 'green3', 'cyan-e4', 'blue5', 'purple6']
*/
```

 

### filter

 

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

 

```js
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let filterResult = numbers.filter((item, index, array) => item > 2);
console.log(filterResult); //  [3, 4, 5, 4, 3]
```

 

### map()

 

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

 

```js
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let filterResult = numbers.map((item, index, array) => item * 2);
console.log(filterResult); // [2, 4, 6, 8, 10, 8, 6, 4, 2]
```

 

### reduce()

 

累加器。

 

```js
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let addResult = numbers.reduce((prev, next, index, array) => {
return prev + next;
}, 100);
console.log(addResult); // 125
```

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Unit 4 Do you like pears?课堂实录
聊聊JavaScript在工作中常用的方法(一)
周利琴| PEP 3B U5 Do you like pears? A let’s talk教学设计
PHP 合并数组
MongoDB的查询数组
【Java心得总结四】Java泛型下——万恶的擦除
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服