Один и тот же массив помещаете в result. Делайте копию - замените
.push(x)
на
.push([...x])
.
Или, вместо дополнения существующего массива собирайте на каждой итерации новый массив - уносим объявление внутрь цикла, вместо одного push'а выполняем несколько:
function pyramid(n) {
const result = [];
for (let i = 0; ++i <= n;) {
const x = [];
for (let j = 0; ++j <= i; x.push(1)) ;
result.push(x);
}
return result;
}
А вообще, можно и покороче:
const pyramid = length => Array.from({ length }, (_, i) => Array(i + 1).fill(1));