const arr = [2, 4, 8, 16, 32, 64];
const badNewArr = [0, 1, arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]];
const goodNewArr = [0, 1, ...arr];

console.log(badNewArr);
console.log(goodNewArr);

// output will be not [2, 4, 8, 16, 32, 64] but 2, 4, 8, 16, 32, 64
console.log(...goodNewArr);

const restauraunt = {
  name: "Classico Italiano",
  location: "Via Angelo Tavanti 23, Firenze, Italy",
  categories: ["Italian", "Pizzeria", "Vegetarian", "Organic"],
  starterMenu: ["Focaccia", "Bruschetta", "Garlic Bread", "Caprese Salad"],
  mainMenu: ["Pizza", "Pasta", "Risotto"],
  order: function (starterIndex, mainIndex) {
    return [this.starterMenu[starterIndex], this.mainMenu[mainIndex]];
  },
  orderDelivery: function ({
    starterIndex = 1,
    mainIndex = 0,
    time = "20:00",
    address,
  }) {
    console.log(
      `Order recieved! ${this.starterMenu[starterIndex]} and ${this.mainMenu[mainIndex]} will be delivered to ${address} at ${time}`
    );
  },
  openingHours: {
    thu: {
      open: 12,
      close: 22,
    },
    fri: {
      open: 11,
      close: 23,
    },
    sat: {
      open: 0,
      close: 24,
    },
  },
  orderPasta: function (ing1, ing2, ing3) {
    console.log(
      `Here is your delicious pasta with ${ing1}, ${ing2} and ${ing3}`
    );
  },
  orderPizza: function (mainIngridient, ...otherIngridients) {
    console.log(mainIngridient);
    console.log(otherIngridients);
  },
};

const arr2 = [0, 1, ...[3, 4]];

const [a, b, ...others] = [1, 2, 3, 4];
console.log("REST:", a, b, others);

const [pizza, , risotto, ...otherFood] = [
  ...restauraunt.mainMenu,
  ...restauraunt.starterMenu,
];
console.log(pizza, risotto, otherFood);

const newMenu = [...restauraunt.mainMenu, "Gnocci"];
console.log(...newMenu);

const newMenuCopy = [...restauraunt.mainMenu];
const menu = [...newMenu, ...restauraunt.starterMenu];
console.log();

// Iterables: array, strings,maps,sets. But NOT Objects
const person = "David";
const letters = [...person];

//Objects with the spread operator
const { sat, ...weekDays } = restauraunt.openingHours;
console.log(sat, weekDays);

const add = function (...numbers) {
  let sum = 0;
  for (let i = 0; i < numbers.length; i++) {
    sum += numbers[i];
  }
  console.log("SUM:", sum);
};

add(2, 3);
add(2, 3, 6, 4, 8, 4);
add(2, 3, 6, 4, 76, 32, 78, 8, 4);

const x = [6, 4, 7, 4];
const y = [6, 1, 4, 5, 4, 0, 7, 9, 4];
// sum of unpacked x and y arrays
add(...x, ...y); // 6, 4, 7, 4,6, 1, 4, 5, 4, 0, 7, 9, 4 = 61

restauraunt.orderPizza("muschrooms", "onion", "olives", "spinach");
