20+ Must Know Array Methods That Almost Nobody Knows

  Рет қаралды 86,302

Web Dev Simplified

Web Dev Simplified

Күн бұрын

We are all used to array methods like .map, .forEach, etc, but that is just the tip of the iceberg when it comes to useful array methods. In this video I cover over 20 amazing new array methods that you have probably never heard of.
📚 Materials/References:
Sets Video: • Another 5 Must Know Ja...
Sets Article: blog.webdevsimplified.com/202...
🌎 Find Me Here:
My Blog: blog.webdevsimplified.com
My Courses: courses.webdevsimplified.com
Patreon: / webdevsimplified
Twitter: / devsimplified
Discord: / discord
GitHub: github.com/WebDevSimplified
CodePen: codepen.io/WebDevSimplified
⏱️ Timestamps:
00:00 - Introduction
00:27 - #1
02:15 - #2-3
03:16 - #4
04:11 - #5
04:38 - #6
05:11 - #7-9
06:18 - #10-11
07:35 - #12-13
09:00 - #14
09:50 - #15-21
#ArrayMethods #WDS #JavaScript

Пікірлер: 155
@FunctionGermany
@FunctionGermany 4 ай бұрын
flatMap is NOT like .flat() .map(), it's like .map() .flat(), very different!!
@WebDevSimplified
@WebDevSimplified 4 ай бұрын
Good point. I messed up when talking about this.
@ehm-wg8pd
@ehm-wg8pd 4 ай бұрын
they should call it matFlap
@xiaozhenxiang
@xiaozhenxiang 4 ай бұрын
​@@ehm-wg8pdflatMap = flat the map
@JokeryEU
@JokeryEU 4 ай бұрын
also flatMap only goes 1 lvl deep
@VladBurlutsky
@VladBurlutsky 4 ай бұрын
Always read the ECMAScript specs, that's what all hardcore JS programmers use! The Array.prototype.flatMap and Array.prototype.flat methods in JavaScript are quite similar in their functionality, but they have some key differences: Functionality: flatMap: This method first maps each element using a mapping function, then flattens the result into a new array. It's essentially a combination of the map and flat methods. flat: This method simply flattens an array up to a specified depth and does not perform any mapping. Mapping Function (mapperFunction): flatMap: Requires a mapperFunction as its first argument. This function is called on every element of the array, and the results are then flattened. flat: Does not take a mapping function. It only flattens the array based on the specified depth. Depth Specification: flatMap: Implicitly flattens the array only one level deep. It does not accept a depth argument. flat: Accepts an optional depth argument that determines the depth level to which the array should be flattened. If depth is not provided, the default is one level deep. Error Handling (TypeError): flatMap: Throws a TypeError if the provided mapperFunction is not callable. flat: There's no such error condition specifically related to the function's argument since it doesn't require a function as an argument. Depth Handling in flat: flat: Contains additional steps to handle the depth parameter. If depth is undefined, it is treated as 1, and if it is less than 0 after conversion to an integer, it is set to 0.@@WebDevSimplified
@user-je5kv3uh2t
@user-je5kv3uh2t 4 ай бұрын
Group by & differences were totally new to me. Thanks for the video mate
@sarveshdhiman3993
@sarveshdhiman3993 2 ай бұрын
In a single video I learn lot of things with proper explanation and with so ease. Thanks 🙏
@davidj6755
@davidj6755 4 ай бұрын
I’m excited about the set theory operators. I hope that eventually gets full support across major browsers.
@tropicaljupiter
@tropicaljupiter 4 ай бұрын
Every day we stray further from lodash’s light
@quanghungpham269
@quanghungpham269 4 ай бұрын
I used most of these method quite frequently, they are super useful. My fav one is reduce(), it's very useful when you want to reduce the array to a value and then use that value, also I got headache many times from using it :)
@harmez7
@harmez7 4 ай бұрын
Kyle, thank you for speaking so clearly. Im not that good at English but I can completely understand you, that's why I subbed to here years ago.
@rdubb77
@rdubb77 2 ай бұрын
It’s true, his pacing and diction is very good.
@ahmadfahim6467
@ahmadfahim6467 4 ай бұрын
Thanks man, especially the flapmap and explaining array mutations
@psydook
@psydook 4 ай бұрын
been waiting for this forever. Thank you man
@user-tw6tr8rb6n
@user-tw6tr8rb6n 4 ай бұрын
Bro you really helped a lot. Thank you!
@magnanova
@magnanova 4 ай бұрын
It's about time they added those Set difference/intersection methods!
@aundefined
@aundefined 4 ай бұрын
Great video! Keep it up 💯
@NiceChange
@NiceChange 3 ай бұрын
Great video. Kyle makes JS fun and interesting...not an easy thing to do. 😊
@ajedamilola8146
@ajedamilola8146 4 ай бұрын
I wish I had seen this video sooner. This groupBy would have saved me lots of time. I had to do this manually.
@catto88
@catto88 4 ай бұрын
Wow, didn't knew about .with (this one is very useful!), .groupBy, start/end arguments of .fill, also didn't knew you can add argument like depth to .flat and about Set method, tysm!
@industrydzina
@industrydzina 4 ай бұрын
Important to note that the .fill method behaves differently when you fill the array with objects(including arrays), where it actually fills the array with a REFERENCE to the original object, so that if you perform a mutation on any of the objects in this array, it will perform the same mutation on all the elements in the array. Was stumped by this until ChatGPT helped point me to the docs on MDN...
@Ebiko
@Ebiko 4 ай бұрын
That's why fill is regularly used with a lambda to generate unique objects.
@felixkiptoo421
@felixkiptoo421 4 ай бұрын
You really did simplified my flatMap() understanding
@ukaszzbrozek6470
@ukaszzbrozek6470 4 ай бұрын
I know them all except the set methods. Thanks for a great reminder. When using shift and unshift we should remember that is a very non-performant action because the array need to recalculate all indexes. We should avoid using them. To be honest knowing about at method didn’t change that I am still using array[array.length - 1] syntax. It is such strong muscle memory that I write that without thinking. XD
@ryanlinnane
@ryanlinnane 4 ай бұрын
The shift methods are good for interviews for quickly representing a deck.
@FragmentJS
@FragmentJS 4 ай бұрын
hey, did it come into your mind of building hair gel products lately? great tutorials always
@roebucksruin
@roebucksruin 4 ай бұрын
An important distinction of .fill(), it fills the array with a static value. If you’re filling with an object, it’s the exact same object in memory. I tried to use it with the array constructor to convert an integer into an array of objects with a length of said integer, and every index would change on edit.
@DarrenJohn10X
@DarrenJohn10X 4 ай бұрын
.at() got all the excited press, meanwhile .with() was virtually ignored. Thanks Kyle for talking about both together.
@jischkebd
@jischkebd 4 ай бұрын
you explain these concepts better than the majority of the teachers out there!
@0luckyluca0
@0luckyluca0 4 ай бұрын
amazing timestaps, i always wanted to skip to the topic "6" :D
@shgysk8zer0
@shgysk8zer0 4 ай бұрын
You had me a bit concerned including groupBy() and the Set methods... I was worried the spec had changed yet again. Yes, I knew all of them. I've written polyfills for them, which is why I was worried specs had changed.
@yellowbonbon1
@yellowbonbon1 3 ай бұрын
Thank you for this sharing very helpful. Just want to add this, toReversed, toSorted and toSpliced create a new array. However, they do not do deep clone. In some use case, React could not detect the change if the change is within an object of object. It will be better to note this. "create a new array" somehow could cause confusion.
@Wakedaddy87
@Wakedaddy87 4 ай бұрын
The one thing I felt like was missing from this video is that you usually make sure to provide example situations in when you might use the code, and more importantly why. Otherwise, learned a lot of cool new stuff I will try to find a use for. Thanks!
@MichaelCampbell01
@MichaelCampbell01 4 ай бұрын
A fun exercise is to implement all these methods in terms of `reduce()`.
@GuildOfCalamity
@GuildOfCalamity 4 ай бұрын
Kyle's hair should have its own channel.
@sureshanandsekar4384
@sureshanandsekar4384 4 ай бұрын
sir could you please tell me where is the link for that cheet sheet , am ur new subscriber . you are my guru. and getting each time inspired by ur video ....
@Thassalocracy
@Thassalocracy 4 ай бұрын
It's unfortunate that a lot of these methods are not used more due to the predominance of React in the JavaScript world. React wants to go the way of purely functional programming, so mutating functions like pop, shift, unshift are a big no-no. But if somehow JavaScript could be used in data science then these methods could really come in handy. But first, someone has to come up with handy data science packages like numpy, pandas, scikit 😅 PS: I actually did post a comment earlier but deleted it because I made some mistakes and didn't want to create unneeded controversy 😅
@daleryanaldover6545
@daleryanaldover6545 4 ай бұрын
good thing we don't use react in our projects
@user-ck7ts3ml1g
@user-ck7ts3ml1g 4 ай бұрын
@@daleryanaldover6545 What is used?
@sethwright2518
@sethwright2518 4 ай бұрын
These new functions (most of them at least) are actually good for React specifically because they don't mutate the originals arrays.. so it works better for functional programming 🎉
@dave6012
@dave6012 4 ай бұрын
Shift and unshift are how I do BFS when writing algos in JS
@aliampichelmilan3345
@aliampichelmilan3345 4 ай бұрын
Nice vidio crack!, greetings!
@BokoMoko65
@BokoMoko65 4 ай бұрын
Curiously, it's note supported in Node.js. Although it's very easy to implement function groupBy(list, keyGetter) { return list.reduce((ac, curr) => { const key = keyGetter(curr); ac[key] = ac[key] || []; ac[key].push(curr); return ac; }, {}); }
@michaelharrington5860
@michaelharrington5860 4 ай бұрын
Alternative: function groupBy(array, key) { return array.reduce((groupedItems, item) => { const keyValue = item[key]; if (!groupedItems[keyValue]) { groupedItems[keyValue] = []; } groupedItems[keyValue].push(item); return groupedItems; }, {}); } let groupedByName = groupBy(people, 'name'); console.log(groupedByName);
@cm3462
@cm3462 4 ай бұрын
Fantastic
@raygan3
@raygan3 4 ай бұрын
Will it be automatically polyfilles if used eq in react?
@cadekachelmeier7251
@cadekachelmeier7251 4 ай бұрын
I use .fill when I just want to map over a range of numbers. Mapping over new Array(x) doesn't work since there aren't any keys. But you can do new Array(x).fill(0).map((val, index) => index)
@whosdr
@whosdr 4 ай бұрын
Array.from({length:x}) or [...Array(x)] are also viable solutions.
@vergil_389
@vergil_389 4 ай бұрын
Hello Kyle. Will you avail your course on offer (on a discounted rate) for Christmas. or Before Christmas. 🤞🤞🤞
@meqdadmoradi
@meqdadmoradi 4 ай бұрын
Please make a video about blobs and array buffer
@drvp-bl3xd
@drvp-bl3xd 4 ай бұрын
Groupby is super useful
@BokoMoko65
@BokoMoko65 4 ай бұрын
the with method is kind of superfluous because we can already use the destructuring technique. Like, putting something at the beginning let inTheBeginning = [ newThing, ... people] let inTheEnd = [ ... people, newThing] But if the idea is to insert some value somewhere in the middle of the array, the with is handy indeed
@stevendu06
@stevendu06 4 ай бұрын
There is a catch though, this method involves more overhead because it creates a new array and has to copy each element from the original array to the new one. The larger the original array, the more time and memory this operation requires. For small arrays or situations where immutability is a concern (i.e., you do not want to modify the original array), spreading can be useful despite its slightly lower performance. However, for larger arrays or when performance is critical, and modifying the original array is acceptable, using push is typically faster and more memory-efficient.
@codeguy11
@codeguy11 4 ай бұрын
"20+ Must Know Array Methods That Almost Nobody Knows": 💀 Me using VSCode's autocomplete (and sometimes MDN docs) to browse and explore all JavaScript APIs and features: *Look what they need to mimic a fraction of our power*
@leandrohendrix6487
@leandrohendrix6487 4 ай бұрын
I can't use 'with method' in NodeJs. Should I Install some nodeJs package for use it?
@andrillaf
@andrillaf 4 ай бұрын
It’s good to be a developer on Mac😎
@stanmarsh9458
@stanmarsh9458 4 ай бұрын
groupBy is top!
@daedalus5070
@daedalus5070 4 ай бұрын
Prime made a comment recently about some of these and I kind of agree... we need a toMap, toFilter that does mutate the original array. Just to keep JS consistently inconsistent. 😉
@shivan2418
@shivan2418 4 ай бұрын
I use lodash for most of this functionality.
@SamuelKarani
@SamuelKarani 4 ай бұрын
I think you made an error equating flatMap with flat(infinity).map. I agree with @FunctionGermany in the comments
@amitd1927
@amitd1927 4 ай бұрын
How about performance of each function
@ahmed37551
@ahmed37551 4 ай бұрын
i think you have done enough intros kyle. just keep in the bio.
@user-mw4jj6vj4r
@user-mw4jj6vj4r 4 ай бұрын
Hi everyone, i have node js version 21, but i cant use this methods in vscode. How can i enable this methods?
@nidhijha7081
@nidhijha7081 4 ай бұрын
Only if i would have watched this video one day before, my interview could have been much better 😢
@BokoMoko65
@BokoMoko65 4 ай бұрын
Is there a method to "flat" an object? That is, to make a deep copy of the entire object made of other objects?
@benas989989
@benas989989 4 ай бұрын
Old way: const copy = JSON.parse(JSON.stringify(foo)) New way: const copy = structuredClone(foo)
@VisualArtRonny
@VisualArtRonny 3 ай бұрын
Apparently my face is buried inside MDN docs, since I knew all of them including the last Set methods
@mecozir
@mecozir 4 ай бұрын
part yield function set key specify task
@prafullkumar6369
@prafullkumar6369 4 ай бұрын
amazon-chime-sdk-component-library-react Please create a video on this
@vaishnomatabhaktamandali2000
@vaishnomatabhaktamandali2000 4 ай бұрын
In bathroom rn but listening to lectures
@DarrenJohn10X
@DarrenJohn10X 4 ай бұрын
.fill() ignores in sparse arrays... just so folks are aware! So you can't build an array of 5 "*" with this: let a = Array(5).fill("*") You would need to first map to a non-undefined value every element you want star-ified.
@21Kikoshi
@21Kikoshi 4 ай бұрын
As a youtuber i wonder if youtubers ever watch themselves at x2 or with no sound to see what its like
@Pareshbpatel
@Pareshbpatel 4 ай бұрын
Nice one, Kyle. Thanks. {2023-12-14}
@BauldyBoys
@BauldyBoys 4 ай бұрын
CSS starts calling everything start and end Javascript starts using left and right. Classic.
@chrisjohanesen
@chrisjohanesen 4 ай бұрын
And then there’s “findLast” 🙄
@michaelharrington5860
@michaelharrington5860 4 ай бұрын
`groupBy` alternative for node.js users: function groupBy(array, key) { return array.reduce((groupedItems, item) => { const keyValue = item[key]; if (!groupedItems[keyValue]) { groupedItems[keyValue] = []; } groupedItems[keyValue].push(item); return groupedItems; }, {}); } let groupedByName = groupBy(people, 'name'); console.log(groupedByName);
@cristianjuarez1086
@cristianjuarez1086 3 ай бұрын
that is not an alternative
@turolretar
@turolretar 4 ай бұрын
“Let’s see Paul Allen’s array methods”
@sleeplessowl543
@sleeplessowl543 4 ай бұрын
array instanceof Array
@shirakuyanai4095
@shirakuyanai4095 4 ай бұрын
First time here within 1 minute.
@skywizard3319
@skywizard3319 2 ай бұрын
I would really love if you started naming the chapters instead of numbering them
@nomadshiba
@nomadshiba 4 ай бұрын
epic
@amuuuinjured
@amuuuinjured 4 ай бұрын
knew all of them except last experimental methods...
@krzysztofrozbicki1776
@krzysztofrozbicki1776 4 ай бұрын
The main question is - are they faster than simple for() loop ? I have been playing with the js loops lately and it seems that for array of 10 millions random numbers the for() loop is much faster than: filter, find, forEach, map and reduce. And by faster i mean like 10x times faster. The only method that was faster was the build in sort() method. That worked better even then insertion sort/ merge sort/ or quick sort Algorithm made in JS for loop - i am not sure but i suspect this is because of V8 chromium engine which uses C++
@catalintudorciurte309
@catalintudorciurte309 4 ай бұрын
There are some things to unpack here. A for loop is inlined, while the methods call the given function every single time. Also, a for loop gives you the oportunity to mutate the old array, while most of the other functions create a new array every single time
@cbbcbb6803
@cbbcbb6803 3 ай бұрын
What did people do when there was just array?
@LawJolla
@LawJolla 4 ай бұрын
This video taught me that someone still uses a PC. Wild.
@elpolodiablo5486
@elpolodiablo5486 4 ай бұрын
Are you a caveman ?
@user-ik7rp8qz5g
@user-ik7rp8qz5g 4 ай бұрын
Having reduceRight makes it sound like default reduce is wrong
@bronzekoala9141
@bronzekoala9141 4 ай бұрын
Nice, but who th thought "unshift" was a good name for that???
@Anonymous____________A721
@Anonymous____________A721 4 ай бұрын
388th view
@mecozir
@mecozir 4 ай бұрын
wait general fixed job dom
@LetrixAR
@LetrixAR 4 ай бұрын
The namings for some of these methods are really confusing
@vijaykv555
@vijaykv555 4 ай бұрын
First View
@jasonlough6640
@jasonlough6640 4 ай бұрын
There should be an opposite to .flat(). flat() destroys the structure. What if we were to specify a structure and give an array, like: Array.inflate(arr, structure) where arr = [5,11,87,2] structure = ['age', weight'] which outputs [ { age: 5, weight: 11}, { age: 87, weight: 2}, }
@whosdr
@whosdr 4 ай бұрын
function inflate( values, structure ) { return Object.values( Object.groupBy( values, (e,i)=>Math.floor( i/structure.length ) ) ).map( e => Object.fromEntries( e.map( (v,i) => [structure[i],v] ) ) ); }
@bryson2662
@bryson2662 4 ай бұрын
Most shocking referral, Kyle uses windows
@mangadi3859
@mangadi3859 4 ай бұрын
oh sh- i have to change my .sort() to .toSorted()?
@piyushaggarwal5207
@piyushaggarwal5207 4 ай бұрын
Personal Notes, don't see - Object.groupBy(), Map.groupBy(), Array.with(1, 2), Array.at(-1), Array.fill(1, 1, 3), Array.toReversed(), Array.toSorted(), Array.toSpliced(), Array.flat(2), Array.findLast(), Array.reduceRight()
@SoreBrain
@SoreBrain 4 ай бұрын
Saved me some time, ty
@piyushaggarwal5207
@piyushaggarwal5207 4 ай бұрын
@@SoreBrain I have written down according to me. Skipping things.
@SoreBrain
@SoreBrain 4 ай бұрын
@@piyushaggarwal5207 I realized you left some out, coincidentally the ones I also don't care about (yet) or already knew well. Thanks for the edit and letting me know tho!
@CoryTheSimmons
@CoryTheSimmons 4 ай бұрын
reduce is king. Everything else is just a lodash helper.
@akshaykommu4524
@akshaykommu4524 4 ай бұрын
2nd view
@olegkravchenko9655
@olegkravchenko9655 4 ай бұрын
С*ка, до слёз! Даже плюсик поставил от нахлыва чуйств :D
@foxcryptoboss
@foxcryptoboss 4 ай бұрын
something is very off with the camera and sound sync. looks scary.
@genyklemberg
@genyklemberg 4 ай бұрын
Who cares what you are talking about, I already heard about it and still don't use it 😢 I think I need to visit coding interviews to practice that more often😂
@montebont
@montebont 4 ай бұрын
Solution looking for a problem...
@HoangTran-dm9sf
@HoangTran-dm9sf 4 ай бұрын
😂
@user-xf8mc8bd2u
@user-xf8mc8bd2u 4 ай бұрын
Is there a new way to get the last item in the array instead of the old array[array.length - 1]?
@Popo-pd3ps
@Popo-pd3ps 4 ай бұрын
Just simply use array.at(-1)
@AGSTRANGERTunisianAuthor
@AGSTRANGERTunisianAuthor 4 ай бұрын
If almost nobody knows them then probably you don't need to know them
@yadusolparterre
@yadusolparterre 4 ай бұрын
How else am I going to flex in front of my colleagues
@vodafoneuser1690
@vodafoneuser1690 4 ай бұрын
As demonstrated in this video lol
@angrytvrobot6130
@angrytvrobot6130 4 ай бұрын
I'm sure there will be a few people who see this and go, "oh that will make my bit of code much easier!" There's probably a use case, or they wouldn't exist.
@TaufeeqAhmed-fq9hq
@TaufeeqAhmed-fq9hq 4 ай бұрын
Nice motto 👏👏
@VskiDevs
@VskiDevs 4 ай бұрын
He said they’re just as useful 🫴🏿
@mecozir
@mecozir 4 ай бұрын
post none if code expire
@sevgiligencler
@sevgiligencler 4 ай бұрын
Very noob
@ravisankarp61
@ravisankarp61 4 ай бұрын
Please explain a bit slowly, you are explaining like you are running a sprint.
@windubitably
@windubitably 4 ай бұрын
You can slow the video down. I think his pacing is great.
@dasten123
@dasten123 4 ай бұрын
I really don't see the point of `array.at`.. even for negative indexes, I would prefer `array[array.length - x]` or am I too old-fashioned? :o
@soniablanche5672
@soniablanche5672 4 ай бұрын
it saves you a line of code to store the array in a variable example: const array = getArrayFromApiCall(); array[array.length - 1] vs getArrayFromApiCall().at(-1);
@dasten123
@dasten123 4 ай бұрын
@@soniablanche5672 Ahh!! Yes that makes sense! Thank you, I feel so much better now, haha :D
@mecozir
@mecozir 4 ай бұрын
wait general fixed job dom
Another 5 Must Know JavaScript Features That Almost Nobody Knows
22:42
Web Dev Simplified
Рет қаралды 212 М.
How To Actually Get Hired In 2024
10:43
Web Dev Simplified
Рет қаралды 182 М.
What Happens If You Trap Smoke In a Ball?
00:58
A4
Рет қаралды 16 МЛН
GADGETS VS HACKS || Random Useful Tools For your child #hacks #gadgets
00:35
КАКАЯ ХИТРАЯ КОШКА! #cat #funny #pets
00:50
SOFIADELMONSTRO
Рет қаралды 16 МЛН
Mac & Cheese Donut @patrickzeinali @ChefRush
00:53
albert_cancook
Рет қаралды 207 МЛН
Why You Shouldn't Nest Your Code
8:30
CodeAesthetic
Рет қаралды 2,5 МЛН
TypeScript Generics are EASY once you know this
22:21
ByteGrad
Рет қаралды 115 М.
Top 10 Advanced CSS Responsive Design Concepts You Should Know
20:16
Web Dev Simplified
Рет қаралды 486 М.
Yet Another 5 Must Know CSS Tricks That Almost Nobody Knows
11:36
Web Dev Simplified
Рет қаралды 79 М.
A new approach to container and wrapper classes
25:27
Kevin Powell
Рет қаралды 234 М.
This 14 year old MacBook has some features M1 could only DREAM of.
8:56
What's on Your Screen?
Рет қаралды 11 М.
Learn TypeScript Generics In 13 Minutes
12:52
Web Dev Simplified
Рет қаралды 188 М.
10 Essential Keyboard Shortcuts For Programmers
11:14
Web Dev Simplified
Рет қаралды 86 М.
All 33 JavaScript Array Methods In One Video
51:11
Code Explained
Рет қаралды 22 М.
What Happens If You Trap Smoke In a Ball?
00:58
A4
Рет қаралды 16 МЛН