- 2022/02/07 更新数组值的比较
- 2020/02/12 init
数组去重
普通数组
let a1 = [1, 2, 3, 4, 5]
let a2 = [5, 6, 7, 8, 9, 1]
filter()
let a3 = a1.concat(a2).filter((value,index,self) => {
return self.indexOf(value) === index;
})
利用set()
let a4 = Array.from(new Set(a1.concat(a2)))
对象数组
let arr = [
{name: 'aaa', data: 20},
{name: 'bbb', data: 10},
{name: 'aaa', data: 20},
{name: 'ccc', data: 2},
{name: 'ddd', data: 31},
{name: 'eee', data: 1}
]
利用reduce()
let obj = {};
arr = arr.reduce(function (item, next) {
// console.log(JSON.stringify(item))
// console.log(next)
/*
* 第1次 item: [] , next {name: 'aaa'}
* 第2次 item: [{name: 'aaa'}] , next {name: 'bbb'}
* */
obj[next.name] ? '' : obj[next.name] = true && item.push(next);
return item;
}, []);
数组平均数
reduce
汇总操作
let arr = [12, 34, 56, 78, 90]
let avarge = arr.reduce((temp, item, index) => {
/*
* console.log(temp, item, index)
* 12 34 1
* undefined 56 2
* undefined 78 3
* undefined 90 4
* */
if(index<arr.length-1){
// 求和,返回给下一次
return temp+item
}else{
// 最后一次
return (temp+item)/arr.length
}
})
值的比较
判断是否NaN
通常使用 === 操作符,但NaN无法进行比较
let values = [1,NaN,2];
console.log(values.indexOf(NaN)) // -1
console.log(values.includes(NaN)) // true
🌟 还可以通过 Object.is
let a = NaN
console.log(Object.is(a,NaN)) // true
判断 +0 -0
let a = -0; let b = +0
console.log( a===b ) // true
let values = [1,+0,2]
console.log(values.indexOf(-0)) // 1
console.log(values.includes(-0)) // true
🌟 只能通过 Object.is 区分+0 -0
let a = -0; let b = +0
console.log( Object.is(a,b) ) // false
【多多登场】