一波岛、數(shù)組排序
方式一:
var arr =[18,10,99,87,100,3,2,5,1];
arr.sort(function(a,b){
return a-b
})
方式二:
arr.sort(function(a,b){
if(a>b){return 1}
else{ return -1}
})
二茅坛、數(shù)組去重
方式一:
var arr=[1,3,5,7,1,3,20,28];
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[j] == arr[i]){
arr.splice(j,1)
}
}
}
方式二:
function uniq(array){
var temp = [];
for(var i = 0; i < array.length; i++) {
//如果當(dāng)前數(shù)組的第i項(xiàng)在當(dāng)前數(shù)組中第一次出現(xiàn)的位置是i,才存入數(shù)組则拷;否則代表是重復(fù)的
if(temp.indexOf(array[i]) == -1){
temp.push(array[i])
}
}
return temp;
}
var aaaaa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
console.log(uniq(aaaaa))
var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
console.log(uniq(aa));
方式三:ES6去重
var arr=new Set([12,2,3,4,3,5,12])
alert(arr)
三贡蓖、數(shù)組合并,去重煌茬,排序
let arr1 = [1, 1, 2, 3, 6, 9, 5, 5, 4]
let arr2 = [1, 2, 5, 4, 9, 7, 7, 8, 8]
function uniqueArr(arr1,arr2) {
//合并兩個(gè)數(shù)組
arr1.push(...arr2)//或者arr1 = [...arr1,...arr2]
//去重
let arr3 = Array.from(new Set(arr1))//let arr3 = [...new Set(arr1)]
//數(shù)組排序
arr3.sort(function(a,b){
return a - b;
})
console.log(arr3)
}
uniqueArr(arr1,arr2)
四斥铺、數(shù)組切割多個(gè)數(shù)組
//arr是要被切割的數(shù)組 len參數(shù)是要分割的內(nèi)數(shù)組的長度
split_array=(arr,len)=>{
let arr_length = arr.length;
let newArr = [];
for(let i=0;i<arr_length;i+=len){
newArr.push(arr.slice(i,i+len));
}
return newArr;
}
let data = ['趙','錢','孫','李','周','吳'];
let result = split_array(data, 3);
五、數(shù)組的添加及刪除
shift() //方法:移除數(shù)組中的第一項(xiàng)并返回該項(xiàng)
push() //方法:從數(shù)組末端添加項(xiàng)
若是想實(shí)現(xiàn)相反的操作的話坛善,可以使用
unshift() //方法:在數(shù)組的前端添加項(xiàng)
pop() //方法:從數(shù)組末端移除項(xiàng)
六晾蜘、數(shù)組求和
function sum(arr) {
return arr.reduce(function(x, y) {
return x + y;
});
}
sum([1, 2, 3, 4, 5]); // 15
七、數(shù)組多個(gè)對象去重
arr1=[
{
"xingming":"陳震",
"danweimingcheng":null,
"xingbie":"男",
"jiguan":"",
"minzu":"",
"shengao":"",
"sfz":""
},
{
"xingming":"陳水泉",
"danweimingcheng":null,
"xingbie":"男",
"jiguan":"",
"minzu":"",
"shengao":"",
"sfz":""
},
]
arr2=[
{
"xingming":"陳水泉",
"danweimingcheng":null,
"xingbie":"男",
"jiguan":"",
"minzu":"",
"shengao":"",
"sfz":""
},
{
"xingming":"侍艷",
"danweimingcheng":null,
"xingbie":"女",
"jiguan":"",
"minzu":"",
"shengao":"",
}
];
arr1.push(...arr2)//或者arr1 = [...arr1,...arr2]
console.log(arr1)
let hash={};
arr1 = arr1.reduceRight((item, next) => {
hash[next.xingming] ? '' : hash[next.xingming] = true && item.push(next);
return item
}, []);
console.log(arr1)
unique(arr) {
const res = new Map();
return arr.filter((arr) => !res.has(arr.xm) && res.set(arr.xm, 1));
}
八眠屎、es6之?dāng)?shù)組的flat()剔交,flatMap()
數(shù)組的成員有時(shí)還是數(shù)組,Array.prototype.flat()用于將嵌套的數(shù)組“拉平”改衩,變成一維數(shù)組岖常。該方法返回一個(gè)新數(shù)組,對原數(shù)據(jù)沒有影響葫督。
[1, 2, [3, 4]].flat()
// [1, 2, 3, 4]
flat()默認(rèn)只會“拉平”一層竭鞍,如果想要“拉平”多層的嵌套數(shù)組板惑,可以將flat()方法的參數(shù)寫成一個(gè)整數(shù),表示想要拉平的層數(shù)笼蛛,默認(rèn)為1
[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]
[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]
上面代碼中洒放,flat()的參數(shù)為2,表示要拉平兩層的嵌套數(shù)組滨砍。
如果不管有多少層嵌套,都要轉(zhuǎn)成一維數(shù)組妖异,可以用Infinity關(guān)鍵字作為參數(shù)惋戏。
[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]
如果原數(shù)組有空位,flat()方法會跳過空位他膳。
[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]
flatMap()只能展開一層數(shù)組响逢。