1

Ok so i needed to sort each object using their 'tipo' as parameter. 'urgente' should always be printed first on my screen then 'prioritario'. The solution i came up with was to simply separate em into two arrays then print each array at a time on my screen. THe only problem is that everytime i time to append an array inside my

  • it appens all the values at a time

    ok so heres my html:

    let tasks = [
        {
          titulo: "Comprar comida para o gato",
          tipo: "Urgente"
        },
        {
          titulo: "Limpar o quarto",
          tipo: "urgente"
        },  
        {
          titulo: "Consertar Computador",
          tipo: "prioritário"
        },  
        {
          titulo: "Guardar dinheiro do lanche",
          tipo: "Urgente"
        },  
        {
          titulo: "Beber água",
          tipo: "prioritário"
        },    
        {
            titulo: "Alongamento",
            tipo: "prioritário"
          }, 
      ]
    
    
    
      let prioritário = []
      let urgente = []
    
      for (i = 0; i < tasks.length; i++) {
        if (tasks[i].tipo == "prioritário") {
            prioritário.push(tasks[i].titulo)
        } else {
            urgente.push(tasks[i].titulo)
        }
    }
    
    
    let li = document.createElement('li')
    let ul = document.querySelector('ul')
    
    for (i = 0; i < prioritário.length; i++) {
        li.append(prioritário[i])
        ul.appendChild(li)
        
    }
    <ul>
        <li>ok</li>
    
        <li>ok</li>
        <li>ok</li>
        <li>ok</li>
        <li>ok</li>
        <li>ok</li>
        <li>ok</li>
    
    
    </ul>    

    Ok so i was expecing three differnet

  • on my scrren but somehow it is printing everything together like this

    enter image description here

    Can you guys please explain to me why this is happening and how to solve it

    I don't want to store values as paraphs

  • 2
    • 1
      Just a tip: write your code in English, even the comments! It will be easier for everybody else. So, instead of let prioritário = [], do let priorities = [], etc. Commented Nov 10, 2022 at 3:06
    • 1
      Regarding your problem, you have to append the li as a child of ul: stackoverflow.com/q/20673959/5768908 Commented Nov 10, 2022 at 3:09

    1 Answer 1

    1

    first, put your let li = document.createElement("li"); inside your loop so it will create whole new element.

    second, you cannot li.append(prioritário[i]). appending is for the html element. Thus, make it

    let li = document.createElement("li");
    li.innerHTML = prioritário[i];
    ul.appendChild(li);
    

    let tasks = [
          {
            titulo: "Comprar comida para o gato",
            tipo: "Urgente",
          },
          {
            titulo: "Limpar o quarto",
            tipo: "urgente",
          },
          {
            titulo: "Consertar Computador",
            tipo: "prioritário",
          },
          {
            titulo: "Guardar dinheiro do lanche",
            tipo: "Urgente",
          },
          {
            titulo: "Beber água",
            tipo: "prioritário",
          },
          {
            titulo: "Alongamento",
            tipo: "prioritário",
          },
        ];
    
        let prioritário = [];
        let urgente = [];
    
        for (i = 0; i < tasks.length; i++) {
          if (tasks[i].tipo == "prioritário") {
            prioritário.push(tasks[i].titulo);
          } else {
            urgente.push(tasks[i].titulo);
          }
        }
    
        let ul = document.querySelector("ul");
    
        for (let i = 0; i < prioritário.length; i++) {
          let li = document.createElement("li");
          li.innerHTML = prioritário[i];
          ul.appendChild(li);
        }
    <ul>
      <li>ok</li>
    
      <li>ok</li>
      <li>ok</li>
      <li>ok</li>
      <li>ok</li>
      <li>ok</li>
      <li>ok</li>
    </ul>

    Sign up to request clarification or add additional context in comments.

    Comments

    Your Answer

    By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

    Start asking to get answers

    Find the answer to your question by asking.

    Ask question

    Explore related questions

    See similar questions with these tags.