js數組的性能問題


寫個函數實現

輸入[1,2,3]
返回[1,2,2,3,3,3]

當輸入是[1,2,3,..10000]的時候,保證性能,
要怎么實現

深究 JavaScript 數組 —— 演進&性能
JavaScript 類型化數組

var arr = new Array(10000).fill(0).map((item,index) => index + 1)
function test(arr) {
    console.time('test');
    let res = []
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i]; j++) {
            res.push(arr[i])
        }
    }
    console.log(res.length);
    console.timeEnd('test');
    return res
}
test(arr)

var arr = new Array(10000).fill(0).map((item,index) => index + 1)
function test2(arr) {
    console.time('test2');
    let total = (1 + arr[arr.length - 1]) * arr.length / 2
    let buffer = new ArrayBuffer(total * 4)
    let typeArr = new Int32Array(buffer);
    let index = 0
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i]; j++) {
            typeArr[index++] = arr[i]
        }
    }
    console.log(typeArr.length);
    console.timeEnd('test2');
    return typeArr
}
test2(arr)


免責聲明!

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



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