Estou com o problema abaixo fiz as funções mas estou tendo problemas e retornar o array corrigido pelo “resolve”.
Escreva duas funções javascript (ES6) usando a técnica de promisses. A primeira
função, colocarTodasPalavrasEmMaiusculo(), receberá um array de palavras e as colocará
em maiúsculo. Nesta primeira função, o uso da função map (de Array) é obrigatório (acredito
que você já saiba a razão). Verifique, dentro do escopo da função map, se o array possui
valores que não são Strings, e se houver valores que não são String, um erro deve ser gerado.
A segunda função, ordenarPalavras(), realizará uma ordenação nas palavras por ordem
alfabética. Nesta segunda função, utilize a função forEach (de Array) para verificar se o
array possuir valores que não são Strings, caso haja valores que não são String, gere um erro.
Atenção: você deverá utilizar encadeamento de funções.
const colocarTodasPalavrasEmMaiusculo = (arr) => new Promise((resolve, reject) => {
if (arr.filter((elem) => typeof(elem) != "string").length) {
reject("O elemento não é uma String!")
} else {
resolve(arr.map((elem) => elem.toUpperCase()))
}
});
const ordenarPalavras = (arr) => new Promise((resolve, reject) => {
if (arr.filter((elem) => typeof(elem) != "string").length) {
reject("O elemento não é uma String!")
} else {
resolve(arr.forEach(element => {
console.log(element.split('').sort().toString().replace(/,/g,""))
element.split('').sort().toString().replace(/,/g,"")
}))
}
})
colocarTodasPalavrasEmMaiusculo(['cba','fed','ihg'])
.then(ordenarPalavras)
.then((e) => console.log(e))
.catch((e) => {
console.log(e)
})
O exercício pede para usar o forEach para verifica se algum elemento não é string, e vc está usando filter (acho bem melhor o filter e acho que vc fez melhor assim).
Acho que na segunda função, vc deve verificar se há algum elemento que não seja string usando o forEach e lançar um Error caso encontre algum caso e, depois só fazer a ordenação.