ES6或以上的数组方法

every: 一假即假
some: 一真即真
every 和 some目的:确定数组的所有成员是否满足指定的测试
some、every返回true、false

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
let arr =[
{'name':'张三','num':65},
{'name':'李四','num':15},
{'name':'李五','num':90},
{'name':'赵六','num':99}
]
let every = arr.every( (item) => {
return item.num >= 60
})
console.log(every ? '满足全部大于等于60的':'有小于60的')

let some = arr.some( (item) => {
return item.num >= 60
})
console.log(some ? '有大于等于60的':'全部小于60的')

//取出过滤后的数据
let reduce = arr.reduce((preVal, curVal, index, arr) => {
curVal.num >= 60 ? preVal.push(curVal) : ''
return preVal
}, [])
console.log(reduce)

//对象里的属性求和
let sum = arr.reduce((preVal, curVal)=> {
return curVal.num + preVal;
}, 0);
console.log(sum) //269

reduce的其他用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//求和
let arr =[1,12,45,56,12,8,54,1,23]
let res = arr.reduce((preVal, curVal) => preVal + curVal)
console.log(res) //212

//去重
let arr =[1,12,45,56,12,8,54,1,23]
let res = arr.reduce((preVal, curVal) => {
if(!preVal.includes(curVal)){
return preVal.concat(curVal)
}else{
return preVal
}
},[])
console.log(res)
// [1, 12, 45, 56, 8, 54, 23]

//降维
let arr = [[0, 1], [2, 3], [4, 5]]
let newArr = arr.reduce((preVal,curVal)=>{
return preVal.concat(curVal)
},[])
console.log(newArr); // [0, 1, 2, 3, 4, 5]

打印出每一个数字

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// 打印出每一个数字
let arr = [1, 2, [3, 4, [5, 6], 7, 8], 9, 10];

// 1.flat方法
for(let i = 0;i<arr.flat(2).length ; i++ ){
console.log(arr.flat(2).sort(function(a,b){return a-b})[i])
}

// 2.递归函数
let Fnc = function (arr) {
for(let i = 0; i<arr.length;i++){
if(typeof arr[i] == 'object'){
Fnc(arr[i])
}else{
console.log(arr[i])
}
}
}
Fnc(arr)

// 3.链式调用数组方法
// let arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14,15] ] ] ], 10]
let dt = arr.toString().split(',').sort(function(a,b){return a-b}).map(Number)
// 去重打印
Array.from(new Set(dt)).map(i=> console.log('链式调用',i))

// 4.JSON.stringify
let str = JSON.stringify(arr).replace(/\[|]/g,'').split(',').map(Number);
Array.from(new Set(str)).map(i=> console.log('JSON.stringify',i))

// 5.toString
let dt1 = arr.toString().split(',').map(Number)
Array.from(new Set(dt1)).map(i=> console.log('toString',i))

// 6.for循环(不是最优解:不建议使用)
let newArr = []
for(let i = 0;i<arr.length;i++){
if(typeof arr[i] == 'number'){
newArr.push(arr[i])
}else{
for(let j = 0;j<arr[i].length;j++){
if(typeof arr[i][j] == 'number'){
newArr.push(arr[i][j])
}else{
for(let k = 0;k<arr[i][j].length;k++){
newArr.push(arr[i][j][k])
}
}
}
}
}
newArr.map(i => console.log(i))

-------------本文结束感谢您的阅读-------------

我的传送门:个人网站GithubGitee