Array

一、四个必备的js数组方法

1. Array.prototype.map() 数组元素更新

  • 创建一个新数组。结果是一个与原数组长度相同的数组,并根据提供的函数转换元素。
1
2
3
4

const arr = [1, 2, 3];
const double = x => x * 2;
arr.map(double); // [2, 4, 6]

2. Array.prototype.filter() 数组元素过滤

  • 创建一个新数组。根据提供的函数返回原数组的子集,结果是一个与原数组长度相同小于的数组。
1
2
3
4

const arr = [1, 2, 3];
const isOdd = x => x % 2 === 1;
arr.filter(isOdd); // [1, 3]

3. Array.prototype.reduce() 数组转换

  • 根据reducer函数和初始值创建任何类型的输出值。
1
2
3
4
5
6
7
8

const arr = [1, 2, 3];

const sum = (x, y) => x + y;
arr.reduce(sum, 0); // 6

const increment = (x, y) => [...x, x[x.length - 1] + y];
arr.reduce(increment, [0]); // [0, 1, 3, 6]

4. Array.prototype.find() 匹配第一个元素

1
2
3
4

const arr = [1, 2, 3];
const isOdd = x => x % 2 === 1;
arr.find(isOdd); // 1

二、在数组开头添加新元素

1. Array.prototype.concat

1
2
3
4
5

const array = [1, 2, 3]; 
const newFirstElement = 4; 
const newArray = [newFirstElement].concat(array);
console.log(newArray); // [4, 1, 2, 3]

2. Array.prototype.unshift

1
2
3
4

const array = [1, 2, 3];
array.unshift(4);
console.log(array); // [4, 1, 2, 3]

3. Spread 展开运算符

1
2
3
4

const array = [1, 2, 3];
const newArray = [4, ...array];
console.log(newArray); // [4, 1, 2, 3]

4. Array.prototype.splice

  • splice(索引, 从第一个参数中指定的索引开始删除的元素数, 想要插入的元素)
1
2
3
4

const array = [1, 2, 3];
array.splice(0,0,4);
console.log(array); // // [4, 1, 2, 3]

三、移除数组重复项

1. Set

1
2
3

const arr = [1, 1, 2, 3];
[...new Set(arr)]; // [1, 2, 3]

2. Array.prototype.filter

1
2
3

const arr = [1, 1, 2, 3];
arr.filter((item, index) => arr.indexOf(item) === index); // [1,2,3]

3. Array.prototype.map

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14

const arr = [1, 1, 2, 3];

function toUniqueArray(array) {
  let newArr = []
  array.map((x) => {
    if(!newArr.includes(x)) {
      newArr.push(x)
    };
  });
  return newArr;
};

toUniqueArray(arr); // [1, 2, 3]

4. Array.prototype.forEach

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14

const arr = [1, 1, 2, 3];

function toUniqueArray(array) {
  let newArr = {};
  array.forEach(function(i) {
    if(!newArr[i]) {
      newArr[i] = true;
    }
  });
  return Object.keys(newArr);
}

toUniqueArray(arr); // ["1", "2", "3"]

5. for

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14

const arr = [1, 1, 2, 3];

function toUniqueArray(array) {
  let newArr = [];
  for (let i = 0; i < array.length; i++) {
    if (newArr.indexOf(array[i]) === -1) {
      newArr.push(array[i]);
    }
  }
  return newArr;
};

toUniqueArray(arr); // [1, 2, 3]

四、数组中最小值和最大值

  • Math.min()
  • Math.max()
  • (…) Spread 展开运算符
1
2
3
4

const arr = [2, 4, 6, 8, 1, 3, 5, 7];
Math.min(...arr); // 1
Math.max(...arr); // 8