Verificar tipo de cliente com programação JavaScript

Olá, tudo bem? Sou muito iniciante e tenho um exercício para verificar o tipo de cliente, porém a verificação de condições está bem complicado pois tem duas condições similares. Vou mostrar o exercício e o que fiz até agora : Numa joalheria, os clientes são categorizados diferentemente a depender do quanto gastem na loja e a depender também do valor unitário dos itens que compram.

Você foi contratado(a) para automatizar essa categorização.

As categorias são:

  • CLIENTES PREMIUM : são clientes que gastaram mais de 1000 reais em compras, sendo que pelo menos algum dos itens custou mais de 200 reais.
  • CLIENTES VIP : são clientes que gastaram mais de 1000 reais, mas não compraram nenhum item acima de 200 reais.
  • CLIENTE NORMAL : são todos os outros clientes, que não se enquadram em nenhuma das outras categorias

Input Format

A entrada será sempre apenas um array de números inteiros chamado precos que guarda os preços de cada um dos itens que um determinado cliente comprou na loja, em reais.

Output Format

Você deve imprimir na tela:

  • PREMIUM : caso o dado cliente seja PREMIUM
  • VIP : caso o dado cliente seja VIP
  • NORMAL : caso seja um cliente normal

O QUE FIZ ATÉ AGORA( ESTÁ DANDO DUPLICIDADE NO CÓDIGO):
var precos =
[100, 100, 100, 200, 50, 30, 140, 100, 100, 100, 544 ]

if(precos[0] + precos[1] + precos[2] + precos[3] + precos[4] + precos[5] + precos[6] + precos[7] + precos[8] + precos[9] + precos[10] + precos[11] + precos[12] + precos[13] + precos[14] > 1000

&& precos[0]>200 || precos[1]>200 || precos[2]>200 || precos[3]>200 || precos[4]>200 || precos[5]>200 || precos[6]>200 || precos[7]>200 || precos[8]>200 || precos[9]>200 || precos[10]>200 || precos[11]>200 || precos[12]>200 || precos[13]>200 || precos[14]> 200)

{console.log(“PREMIUM”)}

else if (precos[0] + precos[1] + precos[2] + precos[3] + precos[4] + precos[5] + precos[6] + precos[7] + precos[8] + precos[9] + precos[10] + precos[11] + precos[12] + precos[13] + precos[14] > 1000

&&
precos[0]<=200 && precos[1]<=200 && precos[2]<=200 && precos[3]<=200 && precos[4]<=200 && precos[5]<=200 && precos[6]<=200 && precos[7]<=200 && precos[8]<=200 && precos[9]<=200 && precos[10]<=200 && precos[11]<=200 && precos[12]<=200 && precos[13]<=200 && precos[14]<= 200)

{console.log(“VIP”)}

else {console.log(“NORMAL”)}

Você está repetindo bastante código mesmo.
Esse código vai ser difícil de manter, imagina se aumenta o tamanho do array? Vai por mais um precos[x] nos ifs?

Nesse exercício você pode usar um for para somar os elementos antes e fazer a verificação no total depois.
Somando:

var total = 0;
var gastouMaisDe200 = false;
for (const preco of precos) {
    if (preco > 200) {
        gastouMaisDe200 = true;
    }
    total = total + preco;
}

Verificando a categoria:

if (total > 1000) {
    if (gastouMaisDe200) {
        //PREMIUM
    } else {
        //VIP
    }
} else {
    //NORMAL
}

Muito obrigado RoinuNosde!! Vou fazer refazer com as dicas e envio aqui!!

funcionou direitinho!! Muito obrigado!! Se puder explicar melhor como funciona essa estrutura do const preco of precos eu ficaria muito grato!!
//
var precos =
[100, 100, 100, 200, 50, 30, 140, 100, 100, 100]
var total = 0;
var gastouMaisDe200 = false;
for (const preco of precos) {
if (preco > 200) {
gastouMaisDe200 = true;
}
total = total + preco;
}

if (total > 1000 && gastouMaisDe200 ===true)
{console.log(“PREMIUM”)}

else if (total > 1000 && gastouMaisDe200 ===false)
{console.log(“VIP”)}

else
{console.log(“NORMAL”)}

O for (const nome of array) é uma forma de percorrer cada valor dentro de um array e processar eles de alguma forma.
O código dentro do for é executado 1 vez para cada elemento no array.

Então no exemplo que eu dei, para cada preco dentro de precos, ele soma na variável total.

1 curtida