码迷,mamicode.com
首页 > 编程语言 > 详细

Js 数组操作集合

时间:2018-04-06 16:43:55      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:lte   数组操作   AC   练习   unique   type   isarray   lse   ret   

推荐空闲时亲手练习一下 必定有所裨益

以下都是鄙人亲手练习总结

 

去重

let a=["1",1,2,3,5,4,2,4,1,6];

[...(new Set(a))]; //["1", 1, 2, 3, 5, 4, 6]

Array.from(new Set(a));  //["1", 1, 2, 3, 5, 4, 6]

function unique(arr){
    let temp={},result=[];
    arr.concat().forEach(item=>{
        if(!temp[typeof(item)+item]){
            result.push(item);
            temp[typeof(item)+item]=1;
        } 
    })
    return result
}
unique(a); //["1", 1, 2, 3, 5, 4, 6]

寻找重复次数最多或最少的元素

let a=[1,2,3,2,4,5];

console.log(max(a)); //2
console.log(min(a)); //1

function max(arr) {
    let temp = {},max=arr[0];

    for (let i=0,l=arr.length;i<l;i++) {
        if (!temp[arr[i]]) {
            temp[arr[i]] = 1;
        } else {
            temp[arr[i]]++;
        }
    }
    for(let x in temp){
        max=temp[x]>temp[max]?x:max;
    }
    return max
}

function min(arr) {
    let temp = {},min=arr[0];

    for (let i=0,l=arr.length;i<l;i++) {
        if (!temp[arr[i]]) {
            temp[arr[i]] = 1;
        } else {
            temp[arr[i]]++;
        }
    }
    for(let x in temp){
        min=temp[x]<temp[min]?x:min;
    }
    return min
}

寻找不第一个未重复的元素

let a=[1,2,3,4,3,2,1,5];

function get(arr){
    let result=[],temp=arr.concat();
    temp.forEach(item=>{
        if(temp.indexOf(item)===temp.lastIndexOf(item)) result.push(item);
    });
    return result[0];
}

get(a); //4

寻找两数组最小的相同元素

let a=[1,5,2,3],b=[3,2,4,1];

function get(arr1,arr2){
        let a1= arr1.concat().sort((a,b)=>{return a-b}),
             a2 = arr2.concat().sort((a,b)=>{return a-b}),
         s=new Set(a2);
    return a1.filter(item=>{
        return s.has(item);
    }).sort((a,b)=>{return a-b})[0];
}

get(a,b); //1

展开多维数组

let arr = [1,2,[3],4,[5,[6]]];

function get(arr) {
    for (let i in arr) {
        if (Array.isArray(arr[i])) {
            arr.splice(i, 1, ...get(arr[i]));
        }
    }
    return arr
}

get(arr);  //[1,2,3,4,5,6]

差集、交集

let a=[1,2,3,5],b=[1,2,5],s=new Set(b);

//差集
a.filter(item=>{return !s.has(item)}); 
//[3]

//交集
a.filter(item=>{return s.has(item)}); 
//[1,2,5]

 

Js 数组操作集合

标签:lte   数组操作   AC   练习   unique   type   isarray   lse   ret   

原文地址:https://www.cnblogs.com/zyktbs/p/8728017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!