From the title, yes there is a difference. Now applied to my scenario: let's consider a class Dummy
:
class Dummy: def __init__(self): self.attached = [] def attach_item(self, item): self.attached.append(item)
If I use this:
D = Dummy() items = [1, 2, 3, 4] for item in items: D.attach_item(item)
I indeed get D.attached = [1, 2, 3, 4]
. But if I map the function attach_item
to the items
, D.attached
remains empty.
map(D.attach_item, items)
What is it doing?
Differences between forEach() and map() methods: The forEach() method does not create a new array based on the given array. The map() method creates an entirely new array. The forEach() method returns “undefined“. The map() method returns the newly created array according to the provided callback function.
map() takes about 2,000ms, whereas a for loop takes about 250ms.
Array.map vs for vs for..of map((x) => x. a + x. b); Loops are also much faster here.
The main difference between map and forEach is that the map method returns a new array by applying the callback function on each element of an array, while the forEach method doesn't return anything. You can use the forEach method to mutate the source array, but this isn't really the way it's meant to be used.
A very interesting question which has an interesting answer.
The map
function returns a Map object which is iterable. map
is performing its calculation lazily so the function wouldn't get called unless you iterate that object.
So if you do:
x = map(D.attach_item, items) for i in x: continue
The expected result will show up.
map
only creates an iterator. You should iterate through it to add items into D.attached
. Like this:
D = Dummy() items = [1, 2, 3, 4] list(map(D.attach_item, items))
Yep, don't do it in your code:) But the example is just useful for understanding.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With