skip to Main Content

I’m a beginner in JavaScript and today I have a question:

  • How can I update or put a new object into an array of object?
  • I need to check if the new object is totally new and then I push the new object into the array of object
  • If the new object have the properties 'ingredienti' that are the same as an existing object in the array and if they’re different I will need to update the array of object.

Because I know that I will use push and everything it’s okay, but I will check if the new object is totally new and then I push the new object into the array of object, and if the new object have the properties 'ingredienti' are the same of the object into array and if they’re different I will update the array of object. So idk what I can do, I tried everything but the only result is a new object into the array 'ricette'

var ricette = [
  {
    nome: "Carbonara",
    ingredienti: ["guanciale", "uovo", "sale"],
    tipologia: "primo",
  },
  {
    nome: "Amatriciana",
    ingredienti: ["guanciale", "pecorino", "pomodoro"],
    tipologia: "primo",
  },
  {
    nome: "Cacio e Pepe",
    ingredienti: ["pepe", "pecorino"],
    tipologia: "primo",
  },
  {
    nome: "Cicoria",
    ingredienti: ["aglio", "peperoncino"],
    tipologia: "contorno",
  },
  {
    nome: "Tiramisu",
    ingredienti: ["uovo", "mascarpone", "savoiardo"],
    tipologia: "dolce",
  },
];



let nuovo = ricette.push({
    nome: "Tofu panato",
    ingredienti: ["farina", "pangrattato", "olio"],
    tipologia: "secondo",
});

2

Answers


  1. var ricette = [
        {
            nome: "Carbonara",
            ingredienti: ["guanciale", "uovo", "sale"],
            tipologia: "primo",
        },
        {
            nome: "Amatriciana",
            ingredienti: ["guanciale", "pecorino", "pomodoro"],
            tipologia: "primo",
        },
        {
            nome: "Cacio e Pepe",
            ingredienti: ["pepe", "pecorino"],
            tipologia: "primo",
        },
        {
            nome: "Cicoria",
            ingredienti: ["aglio", "peperoncino"],
            tipologia: "contorno",
        },
        {
            nome: "Tiramisu",
            ingredienti: ["uovo", "mascarpone", "savoiardo"],
            tipologia: "dolce",
        },
    ];
    
    function pushIfNew (array, obj){
        if (array.some(_obj=> obj.nome == _obj.nome))
            return array[array.map(_obj=>_obj.nome).indexOf(obj.nome)] = obj
    
        array.push(obj)
        array[array.map(_obj=>_obj.nome).indexOf(obj.nome)] = obj
        return array.length
    
    } 
    
    
    pushIfNew(ricette, {
        nome: "Amatriciana",
        ingredienti: ["farina", "pangrattato", "olio"],
        tipologia: "secondo",
    }) // this updates because there's a reciepe with name Amatriciana
    
    pushIfNew(ricette, {
        nome: "new dish",
        ingredienti: ["a", "b", "c"],
        tipologia: "secondo",
    }) // this inserts new dish
    
    console.log(ricette)
    Login or Signup to reply.
  2. You can use a loop to iterate through the array and check if a matching object exists or not.

    var ricette = [
      {
        nome: "Carbonara",
        ingredienti: ["guanciale", "uovo", "sale"],
        tipologia: "primo",
      },
      {
        nome: "Amatriciana",
        ingredienti: ["guanciale", "pecorino", "pomodoro"],
        tipologia: "primo",
      },
      {
        nome: "Cacio e Pepe",
        ingredienti: ["pepe", "pecorino"],
        tipologia: "primo",
      },
      {
        nome: "Cicoria",
        ingredienti: ["aglio", "peperoncino"],
        tipologia: "contorno",
      },
      {
        nome: "Tiramisu",
        ingredienti: ["uovo", "mascarpone", "savoiardo"],
        tipologia: "dolce",
      },
    ];
    
    let nuovo = {
      nome: "Tofu panato",
      ingredienti: ["farina", "pangrattato", "olio"],
      tipologia: "secondo",
    };
    
    let found = false;
    
    for (let i = 0; i < ricette.length; i++) {
      // Check if the ingredients match
      if (JSON.stringify(ricette[i].ingredienti) === JSON.stringify(nuovo.ingredienti)) {
        // Update the existing object with the new data
        ricette[i] = nuovo;
        found = true;
        break; // No need to continue searching once updated
      }
    }
    
    if (!found) {
      // If no matching ingredient list was found, add the new object to the array
      ricette.push(nuovo);
    }
    
    console.log(ricette);
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search