数组求和
-
for循环求和
let arr = [1,2,3,4,5] function sum(arr){ let sum = 0; for(let index = 0;index<arr.length;index++){ sum += arr[index] } return sum } console.log(sum(arr))
-
map-reduce求和
let arr = [1,2,3,4,5] function sumMap(arr){ let sum = 0 arr.map((value,index,arr)=>{ sum += value }) return sum } function sumReduce(arr){ return arr.reduce((prev,cur)=>{ return prev+cur}) } console.log(sumMap(arr)) console.log(sumReduce(arr))
-
forEach循环
let arr = [1,2,3,4,5] function sumForeach(arr){ let sum = 0 arr.forEach(val => { sum += val }); return sum } console.log(sumForeach(arr))
-
递归
let arr = [1,2,3,4,5] function recursion(arr){ let len = arr.length if(len == 0){ return 0 } if (len == 1) { return arr[0] } return arr[0] + recursion(arr.slice(1)) } console.log(recursion(arr))
数组去重
let arr = [1, 2, 2, null, undefined, [], {}, {}, 'str', 'str', { a: 1 }, {a:1}]
-
解构+Set
let arr = [1, 2, 2, null, undefined, [], {}, {}, 'str', 'str', { a: 1 },{a:1}] function unique(arr){ return [...new Set(arr)] } console.log(unique(arr)) //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
-
Array.form + Set
function unique(arr){ return Array.from(new Set(arr)) } console.log(unique(arr)) //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
-
Array.map + indexOf
function unique (arr) { let tempArr = [] arr.map((value) => { if (tempArr.indexOf(value) === -1){ tempArr.push(value) } }) return tempArr } console.log(unique(arr)); //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
-
Array.forEach + includes
function unique (arr) { let tempArr = [] arr.forEach(val => { if (!tempArr.includes(val)) { tempArr.push(val) } }); return tempArr } console.log(unique(arr)); //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
-
Array.forEach + Map
function unique (arr) { let map = new Map() let array = new Array() arr.forEach(val =>{ if(map.has(val)){ map.set(val,true) }else{ map.set(val,false) array.push(val) } }) return array; } console.log(unique(arr)); //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
-
filter + indexOf
function unique(arr){ return arr.filter((val,index) =>{ return arr.indexOf(val,0)=== index }) } console.log(unique(arr)); //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
-
对象属性
function unique (arr) { let tempArr = [] let obj = {} arr.forEach(val => { if (!obj[val]) { tempArr.push(val) obj[val] =val } }) return tempArr } console.log(unique(arr)); //[ 1, 2, null, undefined, [], {}, 'str' ]
总结:
1~6种方式:均无法判断出Object类型
第7种,会将非空Object忽略