# Iteration: map, filter, reduce, forEach — जावास्क्रिप्ट

Source: https://www.geekswithgeeks.com/hi/javascript/js-array-iteration

> फंक्शनल मेथड्स जो ज़्यादातर लूप की जगह लेते हैं।

## forEach और map

`forEach` हर आइटम पर कोड चलाता है; `map` हर आइटम को बदलकर नई array बनाता है।

```js
const nums = [1, 2, 3];
nums.forEach(n => console.log(n * 2));

const doubled = nums.map(n => n * 2);
console.log(doubled);   // [2, 4, 6]
```

## filter और reduce

`filter` किसी शर्त को पास करने वाले आइटम रखता है; `reduce` पूरी array को एक मान में समेट देता है।

```js
const nums = [1, 2, 3, 4, 5];
const evens = nums.filter(n => n % 2 === 0);
const total = nums.reduce((sum, n) => sum + n, 0);
console.log(evens);  // [2, 4]
console.log(total);  // 15
```

## map बनाम forEach

`forEach` `undefined` लौटाता है — इसे side effects के लिए उपयोग करें। `map` **नई array** लौटाता है — डेटा बदलने के लिए इसे उपयोग करें।

**Quiz:** कौन-सा मेथड मूल array जितनी या उससे छोटी नई array लौटाता है?

- [ ] map
- [x] filter
- [ ] forEach

*Answer:* filter. `filter` केवल शर्त पास करने वाले आइटम रखता है, इसलिए नतीजा मूल से लंबा कभी नहीं हो सकता।
