Hey everyone! If you're new to coding, you're probably excited but maybe a little overwhelmed, right? Don't sweat it! 😅 Today, we're going to look ...
For further actions, you may consider blocking this person and/or reporting abuse
3) can be shorter:
5) You have not shown how to use the function, and it will only delay the execution of code chained with the Promise. Statements immediately after will proceed as normal with no delay.
6) Your input is missing the
key
.7) Your input shown is wrong, and this can also be shorter - using the built-in method designed for the purpose:
8) Will not function correctly as it will never return
#ffffff
, and also many other colours as you are not padding the string with leading zeroes. A correct version:#3: when sorting numbers just use subtraction for numbers just do
a - b
for ascending orderand for strings use
a.localeCompare(b)
Yes, this is also correct!
1. The
chill
FunctionYou're correct; my initial example did not show how to actually use the function in a meaningful way. It's a
Promise
-based function, so you'd typically use it withasync/await
or.then()
to actually cause a delay in the code's execution. Here's how you could use it:2. The
sortBy
FunctionYou bring up a good point. The function could indeed be simplified to:
This approach assumes that
a[key]
andb[key]
will never be equal if sorting is based on unique identifiers, which might be okay for some cases but not all.3. The
pluck
FunctionYou're right; the input was incomplete without specifying the key. A more full example could be:
4. The
insert
FunctionYour point is valid; the input example could have been more complete. Also, your shorter version using
splice
is more concise. However, one benefit of the originalslice
approach is that it does not mutate the original array.5. The
randomColor
FunctionYou are correct again; the original version can indeed skip some colors and never reach
#FFFFFF
. Your version with padding zeros is more accurate in generating the full spectrum of colors:Thank you for pointing out these details; your observations are insightful and enhance the accuracy and efficiency of the examples.
I will update it according to it!
Try the shorter
sortBy
with repeated identifiers. Works just fine. If the two identifiers are equal it makes no difference what order they are sorted in.My
splice
example doesn't mutate the original array.Might want to fix the glaring typo in the header image too! 😉
@jonrandy which one?
"8 One-Linear You Will Love"
ohh yes you are correct! 😊
I am open for any other suggestions
1. The
sortBy
Function with Repeated IdentifiersYou're right that if two elements have the same identifier, the order doesn't matter for those particular elements. In many sorting algorithms, including JavaScript's native
.sort()
, elements that compare as equal remain in their original order (stable sort). So, your simplified version is equally effective:This will work just fine even with repeated identifiers.
2. The
splice
Example and Array MutationI apologize for the misunderstanding. You're correct; your example using
splice
actually doesn't mutate the original array because you made a shallow copy (a=[...arr]
) before applying thesplice
.Here's the function for clarity:
In this function,
a=[...arr]
creates a new array that is a copy of the originalarr
. Then,splice
is called on this new array (a
), so the originalarr
remains unchanged. Therefore, it is a non-mutating operation on the original array.Thank you for your keen observations; they serve to improve the quality and accuracy of the discussion.
My favorite oneliner when building Web Components, or any DOM is:
Click the Result tab:
Great!
Please never do #4: comparing using
JSON.stringify(a) == JSON.stringify(b)
. It's very poor practice: it doesn't guarantee correctness - in some cases it can give false positive as well as false negative (for instance objects equal but key order is not JSON stringify will produce different output) - as some objects might not get stringified at all, and some values can even result into json.stringify throwing an error.If you have class objects, then good idea is to implement
equal()
method on your object and comparea.equal(b)
. For generic object use recursive algorithm.But more importantly consider why do you need deep equality check in first place - as it can be computationally intensive. Likely there should be ways to avoid it in first place.
Yes it doesn't give a correct solution for every scenario
While I'm not saying that all of these suffer from it, this is the kind of programming that leads to performance hell. People get so used to shorthand versions of things (mostly loop-based), that end up enumerating collections an enormously unnecessary amount of times.
This is also found in .Net and the LINQ advocates.
Bottom line: Shorter is more commonly worse than you think. Analyze your algorithms thoroughly.
It's not totally correct. It depends
Great, I think it would be useful to also comment that it can happen that objects with the same values still return false when compared with
stringify
method due to the order of their propertiesyes correct!
Thanks for the article, I definitely learnt a lot from this! I slightly worry that some of the wording in Point 4 distracts the reader from realising that just because two arrays have the same values doesn't mean they actually are the same. They aren't the same object, for example, they just have the same values in them. Fun article though :)
thanks
Hi @shivamblog If it makes sense to you I would add a one-liner to shuffle and pick items from an array:
what is
items
here?@shivamblog Sorry items could be the number of items so you can shuffle and also get only some of them:
and the array should be the array to shuffle and slice it.
Then it is correct!
Great post
thanks!