summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2017-04-20 15:52:00 +0000
committerPhil Hughes <me@iamphill.com>2017-04-20 15:52:00 +0000
commitc7049ed07f411337f5f0569197f2b05649ec6038 (patch)
tree3d49836cc7944a569dbbd52d7e157a26e932a929
parent9bef6ce67eb15eeb9ad762682d95adc1cca4fe28 (diff)
downloadgitlab-ce-c7049ed07f411337f5f0569197f2b05649ec6038.tar.gz
Adds documentation entry: Don't user forEach, aim for code without side effects
-rw-r--r--doc/development/fe_guide/style_guide_js.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/doc/development/fe_guide/style_guide_js.md b/doc/development/fe_guide/style_guide_js.md
index ed656476a96..038a689c09a 100644
--- a/doc/development/fe_guide/style_guide_js.md
+++ b/doc/development/fe_guide/style_guide_js.md
@@ -168,6 +168,23 @@ See [our current .eslintrc][eslintrc] for specific rules and patterns.
- Avoid constructors with side-effects
+- Prefer `.map`, `.reduce` or `.filter` over `.forEach`
+A forEach will cause side effects, it will be mutating the array being iterated. Prefer using `.map`,
+`.reduce` or `.filter`
+
+ ```javascript
+ const users = [ { name: 'Foo' }, { name: 'Bar' } ];
+
+ // bad
+ users.forEach((user, index) => {
+ user.id = index;
+ });
+
+ // good
+ const usersWithId = users.map((user, index) => {
+ return Object.assign({}, user, { id: index });
+ });
+ ```
#### Parse Strings into Numbers
- `parseInt()` is preferable over `Number()` or `+`