JS-数组API

forEach 遍历所有元素

1
2
3
4
5
var arr = [1, 2, 3]
arr.forEach(function (item, index) {
// 遍历数组的所有元素
console.log(index, item)
})

every 判断所有元素是否都符合条件

1
2
3
4
5
6
7
8
var arr = [1, 2, 3]
var resulet = arr.every(function (item, index) {
// 用来判断所有的数组元素,都满足一个条件
if (item < 4) {
return true
}
})
console.log(resulet)

some 判断是否有至少一个元素符合条件

1
2
3
4
5
6
7
8
var arr = [1, 2, 3]
var resulet = arr.some(function (item, index) {
// 用来判断所有的数组元素,只要有一个满足条件即可
if (item < 2) {
return true
}
})
console.log(resulet)

sort 排序

1
2
3
4
5
6
7
8
9
var arr = [1, 5, 4, 2, 3]
var arr2 = arr.sort(function (a, b) {
// 从小到大排序
// return a - b

// 从大到小排序
return b - a
})
console.log(arr2)

map 对元素重新组装,生成新数组

1
2
3
4
5
6
var arr = [1, 2, 3, 4, 5]
var arr2 = arr.map(function (item, index) {
// 将元素重新组装,并返回
return '<b>' + item + '</b>'
})
console.log(arr2)

filter 过滤符合条件的元素

1
2
3
4
5
6
7
8
var arr = [1, 2, 3, 4, 5]
var arr2 = arr.filter(function (item, index) {
// 通过某一个条件过滤数组
if (item >= 2) {
return true
}
})
console.log(arr2)

写一个能遍历对象和数组的forEach函数

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
function forEach(obj, fn) {
var key
// 准确判断是不是数组
if (obj instanceof Array) {
obj.forEach(function (item, index) {
fn(index, item)
})
} else {
// 不是数组就是对象
for (key in obj) {
fn(key, obj[key])
}
}
}

var arr = [1, 2, 3]
// 注意,这里参数的顺序换了,为了和对象的遍历格式一致
forEach(arr, function (index, item) {
console.log(index, item)
})

var obj = {x: 100, y: 200}
forEach(obj, function (key, value) {
console.log(key, value)
})