算法题

1 实现多维数组去重排序:

var arr = [8,5,4,7,3,2,[2,9,5,3,0,4,[4,3,1,9,0,5]]],
    a = [], item;

function s(arr){
    for(item of arr){
        if(Array.isArray(item)){
            s(item);
        } else {
            a.push(item);
        }
    }
}
s(arr);
a = [...new Set(a)].sort((a, b) => {
    return a-b;
});
console.log(a);

2 实现数组排序:

var arr = [7,4,9,5,3,0,1],
    len = arr.length,
    i, k;

for(i = 0; i < len - 1; i++){
    for(k = 1; k < len - i; k++){
        if(arr[i] > arr[i+k]){
            t = arr[i];
            arr[i] = arr[i+k];
            arr[i+k] = t;
        }
    }
}
console.log(arr);

3 实现数组去重:

var arr = [7,4,9,5,3,0,1,5,3,7,9,5,0,1,2,3,5],
    a = [];

arr.forEach(item => {
    if(!a.includes(item)){
        a.push(item);
    }
});
console.log(a);

4 实现对象的深拷贝

var obj = {
        a: 1,
        b: {
            c: 3
        }
    };
function deepClone(obj) {
    var objClone = Array.isArray(obj) ? [] : {};
    if (obj && typeof obj === "object") {
        for (key in obj) {
            // for in 会循环出原型上的属性
            if (obj.hasOwnProperty(key)) {
                if (obj[key] && typeof obj[key] === "object") {
                    objClone[key] = deepClone(obj[key]);
                } else {
                    objClone[key] = obj[key];
                }
            }
        }
    }
    return objClone;
}
console.log(deepClone(obj));   
// {
//     a: 1,
//     b: {
//         c: 3
//     }
// }
console.log(deepClone(obj) === obj);   // false

 5 判断字符串是否是回文

var str = '12321';
Array.from(str).reverse().join('') === str
var s = '23432';
function isRstr(){
    for(let i = 0 ; i < s.length/2; i++) {
        if (s[i] !== s[s.length - i - 1]) {
            return false;
        } 
    }
    return true;
}
console.log(isRstr(s));

 

posted @ 2020-04-13 12:32  seeBetter  阅读(168)  评论(0)    收藏  举报