關於Array.fill方法的使用

今天突然發現Array.fill方法不能亂用,譬如生成楊輝三角

用fill方法:

const pascalTriangle = n => {
    const res = new Array(n).fill([]);
    for (let i = 0; i < n; i++) {
 
        res[i].length = i + 1;
        for (let j = 1; j <= n; j++) {
            res[i][0] = 1;
            res[i][res[i].length - 1] = 1;
            i >= 2 && j < i && (res[i][j] = res[i - 1][j - 1] + res[i - 1][j])
        }
    }
    return res;
};

生成結果每一項全變成最後一項了

還是老老實實依次把每個項賦值都成空數組:

const pascalTriangle = n => {
    const res = new Array(n).fill([]);
    for (let i = 0; i < n; i++) {
        res[i].length = i + 1;
        for (let j = 1; j <= n; j++) {
            res[i][0] = 1;
            res[i][res[i].length - 1] = 1;
            i >= 2 && j < i && (res[i][j] = res[i - 1][j - 1] + res[i - 1][j])
        }
    }
    return res;
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章