Rumah hujung hadapan web tutorial js Senarai Beli-belah (Im) boleh ubah untuk Pasta Pesto Sedap

Senarai Beli-belah (Im) boleh ubah untuk Pasta Pesto Sedap

Aug 21, 2024 am 09:01 AM

An (Im)mutable Shopping List for a Delicious Pesto Pasta

Pasta pesto adalah bukti bahawa G-d wujud

Terdapat beberapa perkara dalam hidup yang memberi saya lebih keseronokan daripada bantuan bertimbun-timbun pesto segar berbanding Capellini (Rambut Malaikat) buatan sendiri. Saya seorang penggemar makanan yang setia - terutamanya apabila ia datang kepada masakan Itali - dan sentiasa mencuba resipi yang lebih kompleks, tetapi kesederhanaan dan keseronokan hidangan minimalis sedemikian tidak pernah berhenti memuaskan. Jika saya bernasib baik untuk memilih hidangan terakhir, ia akan menjadi keputusan yang sukar antara sushi dan pesto berbanding pasta, tetapi saya masih fikir pasta pesto menang akhirnya.

Semua perbincangan tentang pesto ini membuatkan saya lapar

Apa yang perlu saya lakukan? Sudah tentu, buat pasta pesto. Kadang-kadang anda hanya perlu berkata, "Quando a Roma!"

Mari mulakan dengan membuat senarai bahan untuk dibeli dari Pasar Itali kami yang mesra, "Il Mercato di Giovanni." Kami akan membuat senarai beli-belah kami daripada dua resipi menggunakan tatasusunan objek tidak berubah dan boleh berubah. Walaupun adalah lebih cekap untuk hanya menulis apa yang kami perlukan, anda tahu bahawa ini lebih menyeronokkan. Saya boleh memberitahu anda kebuluran untuk mengetahui lebih lanjut tentang cara kita boleh memprogram cara kita untuk pasta pesto, jadi mari gali terus. "Mangia Mangia!"

Mencipta tatasusunan resipi pasta dan pesto yang berasingan

Kita akan mulakan dengan mengisytiharkan pembolehubah untuk pastaRecipeArray dan pestoRecipeArray, dengan setiap pembolehubah ditugaskan kepada tatasusunan objek, di mana setiap objek mewakili ramuan individu.

Apabila kami menetapkan nilai tatasusunan kepada setiap pembolehubah, kami menggunakan kaedah Object.freeze() untuk memastikan ia tidak berubah. (lebih lanjut mengenai perkara ini kemudian)

Setiap objek resipi mempunyai tiga sifat, dengan pasangan nilai kunci seperti berikut:

  • 'name' = Nama bahan dalam bentuk 'rentetan'
  • 'resipi' = Nilai atau nilai, dalam bentuk 'tatasusunan', menunjukkan resipi mana bahan yang diperlukan untuk (pasta, pesto, atau kedua-duanya)
  • 'harga' = Harga bahan dalam USD, dalam bentuk 'nombor', menggunakan kandungan tiruan yang agak tidak realistik

(nota: Saya telah meninggalkan kuantiti dan butiran lain untuk memastikan perkara ringkas dan agak mudah dalam siaran ini. Kami juga boleh melaksanakan objek ini menggunakan JSON, tetapi kami memastikan perkara mudah dicerna di sini.)

Kod untuk mewujudkan tatasusunan ini akan kelihatan seperti ini:

const pastaRecipeArray = Object.freeze([
  { "name": "Eggs", "recipe": ["pasta"], "price": 6.99 },
  { "name": "Extra Virgin Olive Oil", "recipe": ["pasta", "pesto"], "price": 12.59 },
  { "name": "Kosher Salt", "recipe": ["pasta", "pesto"], "price": 7.89 },
  { "name": "Semolina Flour", "recipe": ["pasta"], "price": 12.95 }
])

const pestoRecipeArray = Object.freeze([
  { "name": "Basil", "recipe": ["pesto"], "price": 6.99 },
  { "name": "Black Pepper", "recipe": ["pesto"], "price": 9.99 },
  { "name": "Extra Virgin Olive Oil", "recipe": ["pasta", "pesto"], "price": 12.59 },
  { "name": "Kosher Salt", "recipe": ["pasta", "pesto"], "price": 7.89 },
  { "name": "Parmesan", "recipe": ["pesto"], "price": 15.99 },
  { "name": "Pine Nuts", "recipe": ["pesto"], "price": 13.98 }
])
Salin selepas log masuk

Anda akan melihat sekali lagi bahawa kunci resipi menunjukkan nilai yang dalam bentuk tatasusunan. Kami menyediakannya dengan cara ini kerana beberapa bahan digunakan dalam kedua-dua resipi.

Untuk menguji bahawa pastaRecipeArray disediakan dengan betul, kita boleh menggunakan kaedah .forEach(), fungsi panggil balik yang digunakan untuk mengulangi setiap objek dalam tatasusunan. Menggunakan bahan sebagai parameter, kita boleh log masuk ke konsol seperti berikut:

pastaRecipeArray.forEach((ingredient) => {
  console.log(ingredient)
})
Salin selepas log masuk

Apabila anda memeriksa konsol anda akan melihat sesuatu seperti output berikut:

Object {name: "Eggs", recipe: Array(1), price: 6.99}
Object {name: "Extra Virgin Olive Oil", recipe: Array(2), price: 12.59}
Object {name: "Kosher Salt", recipe: Array(2), price: 7.89}
Object {name: "Semolina Flour", recipe: Array(1), price: 12.95}
Salin selepas log masuk

Begitu juga, kita boleh log pestoRecipeArray kita seperti ini:

pestoRecipeArray.forEach((ingredient) => {
  console.log(ingredient)
})
Salin selepas log masuk

Yang menghasilkan perkara berikut:

Object {name: "Basil", recipe: Array(1), price: 6.99}
Object {name: "Black Pepper", recipe: Array(1), price: 9.99}
Object {name: "Extra Virgin Olive Oil", recipe: Array(2), price: 12.59}
Object {name: "Kosher Salt", recipe: Array(2), price: 7.89}
Object {name: "Parmesan", recipe: Array(1), price: 15.99}
Object {name: "Pine Nuts", recipe: Array(1), price: 13.98}
Salin selepas log masuk

(nota: Apabila anda melihat output seperti Array(1) dan Array(2) anda sama ada mahu menulis semula fungsi untuk memilih kekunci tersebut atau hanya klik pada tatasusunan dalam konsol untuk melihat butiran apa yang terkandung di dalamnya.)

Mencipta Tatasusunan Senarai Beli-belah

Sekarang kami telah menyediakan tatasusunan resipi kami, kami ingin meneruskan ke langkah seterusnya, mencipta tatasusunan senarai beli-belah. Untuk melakukan ini, kami ingin menggabungkan tatasusunan objek kami pastaRecipeArray dan pestoRecipeArray ke dalam pembolehubah boleh ubah baharu bernama shoppingListArray. Kami akan melakukan ini menggunakan operator spread ... seperti:

const shoppingListArray = [...pastaRecipeArray, ...pestoRecipeArray]
Salin selepas log masuk

Sekarang mari kita gunakan console.log() berikut untuk melihat rupa senarai baharu kami. Melangkah ke hadapan, kami akan merekodkan nilai harta dalam objek dan bukannya objek penuh, untuk menghilangkan beberapa kekacauan. Anda akan mahu menggunakan kod ini untuk melihat cara senarai kami berubah selepas setiap langkah proses.

shoppingListArray.forEach((ingredient) => {
      console.log(ingredient.name)
})
Salin selepas log masuk

Kami dapat melihat bahawa senarai kami telah digabungkan menjadi satu dalam konsol, kali ini hanya mengelog setiap nama ramuan.

Eggs
Extra Virgin Olive Oil
Kosher Salt
Semolina Flour
Basil
Black Pepper
Extra Virgin Olive Oil
Kosher Salt
Parmesan
Pine Nuts
Salin selepas log masuk

Tatasusunan tidak berubah lwn. boleh ubah

Mengapa kita perlu menjadikan pastaRecipeArray dan pestoRecipeArray tidak berubah? Menjadikannya tidak berubah menjadikannya supaya kita tidak boleh mengubah nilai mereka selepas mereka ditugaskan. Kami tidak mahu hanya mencari resipi ini. Kami mahu menyelamatkan mereka untuk hari yang mulia lagi. Resipi keluarga yang tidak berubah itu perlu diteruskan, tidak kira apa yang akan kami tulis pada senarai beli-belah sementara kami yang boleh diubah.

Kami juga mahu dapat menambah atau menolak bahan-bahan daripada shoppingListArray kami yang baru dibuat untuk membuat hidangan ini mengikut citarasa khusus kami, tanpa menjejaskan resipi asal kami sudah tentu.

Adding, replacing, and deleting ingredients

As you may have noticed, when we combined our pasta and pesto recipes into our shopping list we ended up with duplicates for "Extra Virgin Olive Oil" and "Kosher Salt". We don't need to buy these twice so let's get rid of them. There are fancier ways to eliminate duplicates, but for now we will use .splice() to remove the first Extra Virgin Olive Oil object.

The .splice() method destructively deletes or replaces elements in an array. The first parameter represents the first element we are deleting and the second parameter represents how many elements we want to delete from that start point. While "Extra Virgin Olive Oil" is the second object in the array, arrays start at '0', so technically the second object is represented by a '1'. Let's execute the following:

shoppingListArray.splice(1, 1)
Salin selepas log masuk

In the console you will see that there is now only one "Extra Virgin Olive Oil" object. (note: If you try to use .splice() or similar methods on one of our original recipe arrays you will get a TypeError because we used Object.freeze(), making them immutable.)

We still have an extra "Kosher Salt", and now we are going to use .splice() to it's full power. In addition to our first two parameters we have a third parameter that can replace elements in an array with new elements. I love to add a bit of lemon to my pesto, and I don't like food that is too salty, so let's go ahead and replace our extra "Kosher Salt" with our new "Lemon" object. We will declare our lemon object as a variable for better readibility and include it as the third .splice() parameter.

const lemon = { "name": "Lemon", "recipe": ["pesto"], "price": 2.04 }

shoppingListArray.splice(6, 1, lemon)
Salin selepas log masuk

Today I'm feeling a bit saucy so let's change things up a bit and add in some roasted tomatoes using .push(). With .push() we can add elements to the end of the array, with each parameter representing a new element. So let's add some "Cherry Tomatoes" to our list. Come to think of it, I forgot the "Garlic" too!

const tomatoes = { "name": "Cherry Tomatoes", "recipe": ["pesto"], "price": 5.99 }

const garlic = { "name": "Garlic", "recipe": ["pesto"], "price": 2.99 }

shoppingListArray.push(tomatoes, garlic)
Salin selepas log masuk

Organizing our shopping list

Now that we have all our ingredients well established let's organize them in a way that will make our shopping experience seamless.

Let's organize our list alphabetically using .sort().

shoppingListArray.sort((a, b) => {
  const nameA = a.name
  const nameB = b.name

  if (nameA < nameB) {
    return -1
  }
  if (nameA > nameB) {
    1
  }
  return 0
})
Salin selepas log masuk

Our shopping list now looks like this in the console.

Basil
Black Pepper
Cherry Tomatoes
Eggs
Extra Virgin Olive Oil
Garlic
Kosher Salt
Lemon
Parmesan
Pine Nuts
Semolina Flour
Salin selepas log masuk

Planning ahead for our expected costs

Now we are ready to go to the market, but first let's make sure we know how much money we need, using .reduce(). There is a lot to go over with .reduce(), and I'm getting hungry, so I'll skip over the details.

const ingredientsPrice = shoppingListArray.reduce((accumulator, ingredient) => {
  return accumulator + ingredient.price
}, 0)

console.log("You will need $" + ingredientsPrice + " to make pesto pasta. Man is life is expensive.")
// You will need $98.39 to make pesto pasta. Wow, life is expensive.
Salin selepas log masuk

Creating new recipe list arrays

So we went to the store and got our ingredients, but now we want to separate our ingredients back into their respective recipes, just to lay everything out on the table and keep things in order. Lets create two new arrays, pastaIngredients and pestoIngredients using .filter(), .includes(), and of course .forEach() to log them to the console.

const pastaIngredients = shoppingListArray.filter((ingredient) => {
  return ingredient.recipe.includes('pasta')
})

pastaIngredients.forEach((ingredient) => {
  console.log(ingredient.name)
})
Salin selepas log masuk
const pestoIngredients = shoppingListArray.filter((ingredient) => {
  return ingredient.recipe.includes('pesto')
})

pestoIngredients.forEach((ingredient) => {
  console.log(ingredient.name)
})
Salin selepas log masuk

"Wrapping" it up

As you can see from logging these to the console we successfully created a shoppingListArray that didn't modify our original immutable recipe arrays, pastaRecipeArray and pestoRecipeArray. We then were able to mutably modify the shoppingListArray in a destructive manner to add, delete, and replace ingredients to our liking. We also calculated how much we needed to spend before going to the store. Lastly, we were able to separate these ingredients back into their respective recipes, pastaIngredients and pestoIngredients in preparation for a brilliant meal.

Well, what a delicious dish that was. I hope you enjoyed it as much as I did. Again, Mangia Mangia!

Atas ialah kandungan terperinci Senarai Beli-belah (Im) boleh ubah untuk Pasta Pesto Sedap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1673
14
Tutorial PHP
1278
29
Tutorial C#
1257
24
Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

JavaScript dan Web: Fungsi teras dan kes penggunaan JavaScript dan Web: Fungsi teras dan kes penggunaan Apr 18, 2025 am 12:19 AM

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

JavaScript in Action: Contoh dan projek dunia nyata JavaScript in Action: Contoh dan projek dunia nyata Apr 19, 2025 am 12:13 AM

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami Enjin JavaScript: Butiran Pelaksanaan Memahami Enjin JavaScript: Butiran Pelaksanaan Apr 17, 2025 am 12:05 AM

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python vs JavaScript: Persekitaran dan Alat Pembangunan Python vs JavaScript: Persekitaran dan Alat Pembangunan Apr 26, 2025 am 12:09 AM

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

Peranan C/C dalam JavaScript Jurubah dan Penyusun Peranan C/C dalam JavaScript Jurubah dan Penyusun Apr 20, 2025 am 12:01 AM

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

Python vs JavaScript: Gunakan Kes dan Aplikasi Membandingkan Python vs JavaScript: Gunakan Kes dan Aplikasi Membandingkan Apr 21, 2025 am 12:01 AM

Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.

See all articles