JavaScript 数组方法汇总

数组最大值

es6拓展运算符…

1
2
var arr = [-1, 1, 101, -52, 10, 1001, 1001]
Math.max(...arr)

es5 apply(与方法1原理相同)

1
2
var arr = [-1, 1, 101, -52, 10, 1001, 1001]
Math.max.apply(null,arr)

for循环

1
2
3
4
5
var arr = [-1, 1, 101, -52, 10, 1001, 1001]
let max = arr[0];
for (let i = 0; i < arr.length - 1; i++) {
max = arr[i] < arr[i+1] ? arr[i+1] : arr[i]
}

数组sort()

1
2
3
4
5
var arr = [-1, 1, 101, -52, 10, 1001, 1001]
arr.sort((num1, num2) => {
return num1 - num2 < 0
})
arr[0]

数组reduce

1
2
3
4
var arr = [-1, 1, 101, -52, 10, 1001, 1001]
arr.reduce((num1, num2) => {
return num1 > num2 ? num1 : num2}
)

数组去重

ES6的set

1
2
3
4
5
var arr = [-1, 1, 101, -52, 10, 1001, 1001]
console.log(Array.from(new Set(arr)))
var arr = [-1, 1, 101, -52, 10, 1001, 1001]
console.log([...new Set(arr)])

过滤push

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
```
Array.prototype.distinct = function () {
var arr = this, result = [], len = arr.length
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
j = ++i
}
}
result.push(arr[i])
}
return result
}
var arra = [1, 2, 3, 4, 4, 1, 1, 2, 1, 1, 1]
arra.distinct()
// [3, 4, 2, 1]
## 过滤splice
优点:简单易懂
缺点:占用内存高,速度慢
``` javascript
Array.prototype.distinct = function () {
var arr = this, len = arr.length
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1)
len--
j--
}
}
}
return arr
}
var arra = [1, 2, 3, 4, 4, 1, 1, 2, 1, 1, 1]
arra.distinct()
// [1, 2, 3, 4]

利用对象过滤

1
2
3
4
5
6
7
8
9
10
11
12
13
Array.prototype.distinct = function () {
var arr = this, obj = {}, result = [], len = arr.length
for (i = 0; i < len; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = true;
result.push(arr[i])
}
}
return result
}
var arra = [1, 2, 3, 4, 4, 1, 1, 2, 1, 1, 1]
arra.distinct()
// [1, 2, 3, 4]

数组递归去重

运用递归的思想,先排序,然后从最后开始比较,遇到相同,则删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array.prototype.distinct = function () {
var arr = this, len = arr.length
arr.sort(function(a, b) {
return a - b
})
function loop(index) {
if (index >= 1) {
if (arr[index] === arr[index - 1]) {
arr.splice(index, 1)
}
loop(index - 1)
}
}
loop(len - 1)
return arr
}
var arra = [1, 2, 3, 4, 4, 1, 1, 2, 1, 1, 1]
arra.distinct()

利用indexOf以及forEach

1
2
3
4
5
6
7
8
9
10
11
Array.prototype.distinct = function () {
var arr = this, result = [], len = arr.length
arr.forEach(function (v, i, arr) {
if (arr.indexOf(v, i+1) === -1) {
result.push(v)
}
})
return result
}
var arra = [1, 2, 3, 4, 4, 1, 1, 2, 1, 1, 1]
arra.distinct()

数组合并去重

concat()方法

1
2
3
4
5
6
7
8
9
var a = [1, 2, 3];
var b = [4, 5, 2];
function concatArray(a, b) {
a = a.concat(b)
a = a.distinct()
return a
}
concatArray(a, b)
// [1, 3, 4, 5, 2]

apply()方法

1
2
3
4
5
6
7
8
9
var a = [1, 2, 3];
var b = [4, 5, 2];
function concatArray(a, b) {
Array.prototype.push.apply(a, b)
a = a.distinct()
return a
}
concatArray(a, b)
// [1, 3, 4, 5, 2]

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 数组最大值
    1. 1.1. es6拓展运算符…
    2. 1.2. es5 apply(与方法1原理相同)
    3. 1.3. for循环
    4. 1.4. 数组sort()
    5. 1.5. 数组reduce
  2. 2. 数组去重
    1. 2.1. ES6的set
    2. 2.2. 过滤push
    3. 2.3. 利用对象过滤
    4. 2.4. 数组递归去重
    5. 2.5. 利用indexOf以及forEach
  3. 3. 数组合并去重
    1. 3.1. concat()方法
    2. 3.2. apply()方法
,