一些资料上看到的技巧,感觉挺实用,以后遇到还会继续增加
1、删除数组尾部元素
const arr = [0,1,2,3,4,5]
arr.length =3;
conosle.log(arr)// => [0,1,2]
arr.length = 0;
console.log(arr)// => []
console.log(arr[2]) // => undefined
2、数组去重
const remove = arr = [...new Set(arr)];
remove([42,'foo',true,true]);
// =>[42,'foo',true]
3、平铺多维数组
const arr = [11,[22,33],[44,55],66];
const flatArr = [].concat(...arr); // [11,22,33,44,55,66]
上面的方法只适用于二维数组;需要通过递归可以平铺任意维度的嵌套数组:
function flattenArray(arr){
const flattened = [].concat(...arr);
return flattened.some(item=>Array.isArray(item)) ? flattenArray(flattened) : flattened;
}
const arr = [11,[22,33],[44,[55,66,[77,[88]],99]]];
const flatArr = flattenedArray(arr);
// => [11,22,33,44,55,66,77,88,99]
4、删除数组中某一个属性
var arr = [{a:1,b:2,c:3},{a:4,b:5,c:6},{a:7,b:8,c:9}]
for(var a = 0;a <arr.length;a++){
delete arr[a]["a"]
}
console.log(arr)//[{b: 2, c: 3}, {b: 5, c: 6},{b: 8, c: 9}]
5、在数组指定位置添加元素
var array = ["one", "two", "four"];
console.log(array); // ["one", "two", "four"]
//第一个参数指定位置,第二个参数指定要删除的元素,如果为0,则追加
array.splice(2, 0, "three");
console.log(array); // ["one", "two", "three", "four"]
6. 1)根据type类型将相同的存储在一个数组里,2)根据时间排序,3)时间只有一条的时候追加一条相同的数据,bucketId递增,rate为0.
const arr = [
{"bucketId":98,"type":"collect","time":1543449800000,"rate":0.014},
{"bucketId":98,"type":"collect","time":1543449600000,"rate":0.014},
{"bucketId":98,"type":"share","time":1543449600000,"rate":0.016},
{"bucketId":98,"type":"share","time":1543441600000,"rate":0.016},
{"bucketId":98,"type":"use","time":1543449700000,"rate":0.011},
{"bucketId":98,"type":"use","time":1543449500000,"rate":0.011},
{"bucketId":99,"type":"collect","time":1543449600000,"rate":0.014},
{"bucketId":99,"type":"use","time":1543449600000,"rate":0.012},
{"bucketId":99,"type":"share","time":1543449600000,"rate":0.012},
{"bucketId":99,"type":"click","time":1543449600000,"rate":0.012},
]
function demo (arr) {
//分类
const list = {};
arr.forEach((item) => {
if ( !list[item.type] ) {
list[item.type] = [];
list[item.type].push(item);
} else {
list[item.type].push(item)
}
});
for(var key in list){
//排序
list[key].sort(function(n1,n2){
return n1.time-n2.time
})
//添加
if(list[key].length == 1){
list[key].push({
bucketId: list[key][0].bucketId + 1,
type:list[key][0].type,
time:list[key][0].time,
rate: 0,
})
}
}
console.log(list);
};
demo(arr);