Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Imprimindo no console um resultado inesperado

O meu código ficou da seguinte forma:

import { edFolha } from "./arrays.js"

function mergeSort(array) {

    if (array.length > 1) {
        const meio = Math.floor(array.length / 2)
        const parte1 = mergeSort(array.slice(0, meio))
        const parte2 = mergeSort(array.slice(meio, array.length))
        array = ordena(parte1, parte2)
    }

    return array
}

function ordena(parte1, parte2) {
    let posicaoAtualL1 = 0
    let posicaoAtualL2 = 0
    const resultado = []

    while (posicaoAtualL1 < parte1.length && posicaoAtualL2 < parte2.length) {
        let produtoAtualL1 = parte1[posicaoAtualL1]
        let produtoAtualL2 = parte2[posicaoAtualL2]

        if (produtoAtualL1.preco < produtoAtualL2.preco) {
            resultado.push(posicaoAtualL1)
            posicaoAtualL1++
        }else {
            resultado.push(posicaoAtualL2)
            posicaoAtualL2++
        }
    }

    return resultado.concat(posicaoAtualL1 < parte1.length 
        ? parte1.slice(posicaoAtualL1) 
        : parte2.slice(posicaoAtualL2))
}

console.log(mergeSort(edFolha))

Está com import, mas no algoritmo passado havia funcionado, porém nessa aula ele está imprimindo no terminal:

[ 0, 1, 2, 3, 4, 5, 0, 1, 2, 0, { titulo: 'JavaScript', preco: 25 } ]

Alguém poderia me ajudar a solucionar?

1 resposta
solução!

Problema resolvido :)

Estava errado o push, declarei posição ao em vez de produto