Object.assign and spread operator only work it you have a flat object like {a:1, b:2} But if you have nested object like {a:1,b:2,c:{d:3}} it will copy value of a and b but reference of c,d. so, if you want to copy nested objects you can use "structuredClone(obj)" or "JSON.parse(JSON.stringify(obj))"
JSON.parse(JSON.stringify(obj)) will not work if the object has Arrays, Functions, and Date nested within. In such a scenario, we may have to use loadash or write one custom function to handle Arrays, Functions, and Date objects.
I was here to specifically raise the same objection. But if I were an interviewer, I might be wanting an answer that showed understanding of the LOGIC of cloning. In other words, a recursive function that checks if the passed value is an object, returns it if not, but if it is, loops through its properties and calls ITSELF on each property that is an object, gradually building a new object, then returns the final product. I would not be satisfied with someone just using structuredClone() because I'd want to see their coding/algorithmic knowledge.
Regarding the clone example, be aware that these are shallow copies (they do not work correctly when the object contains other objects). If you need a deep copy you should use the new "structuredClone" api or the usual trick with "JSON.parse(JSON.stringify(obj))"
I am sooo grateful for this video!! I am a junior developer currently preparing for my tech interviews, and some of this stuff was difficult to understand while just reading a text explanation. Thank you for showing these examples step by step, these have helped me get a better understanding of the theory. ♥
Glato to hear that. For interview preparation you might be interested in my Javascript interview questions course where you learn 56 different topics which fully cover Javascript. monsterlessons-academy.com/courses/javascript-interview-questions-coding-interview/
I don't have words to fully express my gratitude. Closures, cloning are things I found hard to understand but your style of teaching made everything so simple to understand. Thank you so much and all the best❤👍👍👏
I have now a full course of 59 coding exercises for Javascript interview. monsterlessons-academy.com/courses/javascript-interview-questions-coding-interview
For the first problem - I understand closures and you are returning a fucntion within the parent function that returns the secret. but Im curious - why not return the secret string directly instead of within the child function? its a const and its private to the someFn() and cant be modified once declared...
In the findVowels i would expect a senior developer would do it with an object because with includes that complexity is much higher. With an object you can just iterate the string once and check each time if the char is a vowel with O(1) complexity
There are different ways. Object is also not ideal. Regexr is easier that const vowelCount = str => { const regex = /[aeiouAEIOU]/g const s = str.match(regex) return s ? s.length : 0 }
Quick question. Currently building my portfolio projects. But I have no knowledge of data structures and algorithms. Should i start training after my portfolio will be completed? Or prior the portfolio?
Do a portfolio, CV and then improve your knowledge and add it. If you are a junior forget about data structures and algorithms at all. learn language and framework.
as for me reduce in the last example is too complicated to understand and debug. Nice for an interview but I would avoid such things in real code. I.e. if jun dev will have to work with that piece of code. In general good video, will look others on the channel too :)
No I don't have something like this. But I have a full course with 57 Javascript questions which covers all knowledge that you need. monsterlessons-academy.com/courses/javascript-interview-questions-coding-interview
Hi, For last question To get element which have max occurrence: After creating object, can we use .sort() nd do descending order based on Occurance nd then return first value from sorted object. Is it correct?
It is not. You assign the reference to the object and not a new object with a value. Try to change property of clone and check the value of both objects.
NOOO! Do not count all the strings, then SEPARATELY find the largest with a second reduce. How wasteful. Mark the highest all along, saving you an extra loop. Like this: const max = {name: "", count:0} target.reduce((namelist, name) => { if(namelist.has(name)) { const current = namelist.get(name)+1; namelist.set(name, current); (current > max.count) && ([max.name, max.count] = [name, current]); } else namelist.set(name, 1); return namelist; }, new Map); return max;
@@MonsterlessonsAcademy If done clearly, it's actually more readable as a single function. More importantly, it's better to impress the interviewer with how well you code as a JOB...and the better performance of doing it as a single loop would be far better in many situations where you're working with a large amount of data. Your code should be elegant and efficient, not just the most basic expression.
reduce is a functional and declarative way of writing code in comparison to for loops. It returns the direct result, avoids creating additional variables before and doesn't have side effects.
WATCH NEXT: Javascript Interview Questions and Answers - Dominate Your Next Interview - th-cam.com/video/wnYKH2dO620/w-d-xo.htmlsi=5DfbGEfhXWiiv0a_
Object.assign and spread operator only work it you have a flat object like {a:1, b:2} But if you have nested object like {a:1,b:2,c:{d:3}} it will copy value of a and b but reference of c,d.
so, if you want to copy nested objects you can use "structuredClone(obj)" or "JSON.parse(JSON.stringify(obj))"
You are totally right
JSON.parse(JSON.stringify(obj)) will not work if the object has Arrays, Functions, and Date nested within. In such a scenario, we may have to use loadash or write one custom function to handle Arrays, Functions, and Date objects.
I was here to specifically raise the same objection.
But if I were an interviewer, I might be wanting an answer that showed understanding of the LOGIC of cloning.
In other words, a recursive function that checks if the passed value is an object, returns it if not, but if it is, loops through its properties and calls ITSELF on each property that is an object, gradually building a new object, then returns the final product.
I would not be satisfied with someone just using structuredClone() because I'd want to see their coding/algorithmic knowledge.
for the last question..we can also do Object.entries(mapping).sort((a,b)=>a
Sure there are different solutions to the same problem.
Regarding the clone example, be aware that these are shallow copies (they do not work correctly when the object contains other objects). If you need a deep copy you should use the new "structuredClone" api or the usual trick with "JSON.parse(JSON.stringify(obj))"
I have a full video about shallow comparison vs deep comparison.
th-cam.com/video/re0G89DwOb8/w-d-xo.htmlsi=snVLRIAqpU0_5OuN
I am sooo grateful for this video!! I am a junior developer currently preparing for my tech interviews, and some of this stuff was difficult to understand while just reading a text explanation. Thank you for showing these examples step by step, these have helped me get a better understanding of the theory. ♥
Glato to hear that. For interview preparation you might be interested in my Javascript interview questions course where you learn 56 different topics which fully cover Javascript.
monsterlessons-academy.com/courses/javascript-interview-questions-coding-interview/
😊@@MonsterlessonsAcademy
@@MonsterlessonsAcademy😊
@@MonsterlessonsAcademy😊
@@MonsterlessonsAcademy😊
As a Junior Developer your content helps me a lot to prepare for interviews and improve my logic
Thank you very much 👍
Happy to hear that!
I don't have words to fully express my gratitude. Closures, cloning are things I found hard to understand but your style of teaching made everything so simple to understand. Thank you so much and all the best❤👍👍👏
Wow, thank you!
I really like your videos, you get straight to the point. Please make more videos like this one!
I have now a full course of 59 coding exercises for Javascript interview.
monsterlessons-academy.com/courses/javascript-interview-questions-coding-interview
I am addicted to your style of teaching .. : )
Glad to hear that!
For the first problem - I understand closures and you are returning a fucntion within the parent function that returns the secret. but Im curious - why not return the secret string directly instead of within the child function? its a const and its private to the someFn() and cant be modified once declared...
It was just an example to show closures. environment variables should not be written in code in any case.
In the findVowels i would expect a senior developer would do it with an object because with includes that complexity is much higher.
With an object you can just iterate the string once and check each time if the char is a vowel with O(1) complexity
There are different ways. Object is also not ideal. Regexr is easier that
const vowelCount = str => {
const regex = /[aeiouAEIOU]/g
const s = str.match(regex)
return s ? s.length : 0
}
@@MonsterlessonsAcademy
And thanks for the videos, you are great!
Thank you, clear and concise
Glad it was helpful!
Quick question. Currently building my portfolio projects. But I have no knowledge of data structures and algorithms. Should i start training after my portfolio will be completed? Or prior the portfolio?
Do a portfolio, CV and then improve your knowledge and add it. If you are a junior forget about data structures and algorithms at all. learn language and framework.
Now just need to get an interview that asks one of these 5 questions...
Good luck with that
as for me reduce in the last example is too complicated to understand and debug. Nice for an interview but I would avoid such things in real code. I.e. if jun dev will have to work with that piece of code. In general good video, will look others on the channel too :)
I like Object.keys(counterObject).sort((a,b) => { return a > b ? -1 : 0 })[0]
Круто! Дякую! Цікаво звідки Ви, Олександре?)
Originally Ukraine, last 8 years Germany
This is great. Thanks!
You're welcome!
Thank you man !!
You're welcome!
Why do we write acc[1] and el[1]? what is the index for and why is it always 1?
Because there are just 2 elements in the array and we want to work with the second one.
Hi , Is there a document or a list of such interview questions that you have maintained?which I can follow?
No I don't have something like this. But I have a full course with 57 Javascript questions which covers all knowledge that you need.
monsterlessons-academy.com/courses/javascript-interview-questions-coding-interview
Hi,
For last question
To get element which have max occurrence:
After creating object, can we use .sort() nd do descending order based on Occurance nd then return first value from sorted object.
Is it correct?
Hi, There are different ways to solve the same task.
@@MonsterlessonsAcademy ok dude. Thanks for replay
I saw ur 59 interview questions video course, really worth fir spending time in it
at 3:50. I see it also work const clone=object. Is it a good practice?
It is not. You assign the reference to the object and not a new object with a value. Try to change property of clone and check the value of both objects.
thank you so much
Welcome 😊
cant we solve the last question using Set?
There are different solutions to the same question
The count vowels i just did [...str.toLowerCase().matchAll(/[aeiou]/g)].length not sure it was right, but worked on my examples :) fun questions :)
It's a totally valid solution. You passed :)
Best !
Thank you!
NOOO!
Do not count all the strings, then SEPARATELY find the largest with a second reduce. How wasteful.
Mark the highest all along, saving you an extra loop.
Like this:
const max = {name: "", count:0}
target.reduce((namelist, name) => {
if(namelist.has(name)) {
const current = namelist.get(name)+1;
namelist.set(name, current);
(current > max.count) && ([max.name, max.count] = [name, current]);
} else
namelist.set(name, 1);
return namelist;
}, new Map);
return max;
It depends on the size of the array. 2 functions are less performant but more readable. But if we work with 10 element then who cares.
@@MonsterlessonsAcademy If done clearly, it's actually more readable as a single function.
More importantly, it's better to impress the interviewer with how well you code as a JOB...and the better performance of doing it as a single loop would be far better in many situations where you're working with a large amount of data.
Your code should be elegant and efficient, not just the most basic expression.
why using .reduce() is better ? You telling to use .reduce() is better, but never explain why.
reduce is a functional and declarative way of writing code in comparison to for loops. It returns the direct result, avoids creating additional variables before and doesn't have side effects.