Умножение в цикле

Как переможножить значения свойств друг на друга? У меня почему-то умножается ни одна итерация на другую, а одна и та же на саму себя. То есть к примеру должно быть 10х5, но почему то выдает 10х10. Что делать?
const shoppingMallData = {
shops: [
{
width: 10,
length: 5
},
{
width: 15,
length: 7
},
{
width: 20,
length: 5
},
{
width: 8,
length: 10
}
],
height: 5,
moneyPer1m3: 30,
budget: 50000
};

 for (let key in shoppingMallData) {
    if (typeof(shoppingMallData[key] === 'object')){
        for (let i in shoppingMallData[key]){
            if (typeof(shoppingMallData[key][i] === 'array')){
                for (let j in shoppingMallData[key][i]) {
                   let s = shoppingMallData[key][i][j] * shoppingMallData[key][i][j];
                    console.log(s);
                } 
            }
        }
    }
}

Потому что код shoppingMallData[key][i][j] * shoppingMallData[key][i][j] означает что одна и та же штука умножается на эту же самую штуку.

И немного про незаданные вопросы.

Как дебажить подобный код?
Вставляй console.log(``) для каждого из значений, участвующих в вычислении того значения которое имеет неожиданный результат. Вот так:

for (let j in shoppingMallData[key][i]) {
    console.log('shoppingMallData[key]', shoppingMallData[key])
    console.log('j', j)
    console.log('i', i)
    console.log('shoppingMallData[key][i][j]', shoppingMallData[key][i][j])
    let s = shoppingMallData[key][i][j] * shoppingMallData[key][i][j];
    console.log(s);
}

таким образом будет явнее видно какие значения где и в каком моменте происходит расхождение реальных значений с ожидаемыми.