一些常見的js編程題


1、實現數組亂序

var a = [1,2,3,4,5,6,7,8,9,0,12,23,45,90];
a.sort(function (a,b) {
    var sign = (Math.random()>0.5) ? 1 : -1;
    return (a-b)*sign;
});

2、reduce的使用

//有一個長度為100的數組,請以優雅的方式求出該數組的前10個元素之和
var b = [1,2,3,4,5,6,7,8,9,10];
var sum = b.slice(0,10).reduce(function (pre,cur) {
    return pre + cur;
},0);

3、有一個長度為100的數組,值為其所在位置的索引

var a = new Array(100);

a = a.join(",").split(",").map(function(item, index) {
    return index;
});

4、如何消除數組中重復的元素

function deRepeat(arr) {
    let newArr = [];
    arr.map(function (item) {
        if(newArr.indexOf(item) === -1){
            newArr.push(item);
        }
    });
    return newArr;
}

 

5、對象的深淺拷貝

淺拷貝:只是拷貝了基本類型的數據,對於數組或對象的話,拷貝的只是其內存地址,因此存在原對象被篡改的可能;

function copy(p) {
    let c = {};
    for(let i in p) {
        c[i] = p[i];
    }
    return c;
}

深拷貝

//深拷貝
function deepcopy(p,c) {
    let d = c || {};
    for(let i in p) {
        if(typeof p[i] === 'object'){
            d[i] = (p[i].constructor === Array) ? []:{};
            deepcopy(p[i],d[i]);
        }else {
            d[i] = p[i];
        }
    }
    return d;
}

ps.Object.assign()方法是淺拷貝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM