1, Delete duplicate elements in array
1 2 3 4 5 6 7 8 | <span class="token keyword">var</span> fruits <span class="token operator">=</span> <span class="token punctuation">[</span> “banana” <span class="token punctuation">,</span> “apple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “watermelon” <span class="token punctuation">,</span> “apple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “grape” <span class="token punctuation">,</span> “apple” <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token comment">// Cách 1:</span> <span class="token keyword">var</span> uniqueFruits <span class="token operator">=</span> Array <span class="token punctuation">.</span> <span class="token keyword">from</span> <span class="token punctuation">(</span> <span class="token keyword">new</span> <span class="token class-name">Set</span> <span class="token punctuation">(</span> fruits <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns [“banana”, “apple”, “orange”, “watermelon”, “grape”]</span> <span class="token comment">// Cách 2:</span> <span class="token keyword">var</span> uniqueFruits2 <span class="token operator">=</span> <span class="token punctuation">[</span> … <span class="token keyword">new</span> <span class="token class-name">Set</span> <span class="token punctuation">(</span> fruits <span class="token punctuation">)</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token comment">// returns [“banana”, “apple”, “orange”, “watermelon”, “grape”]</span> |
In the second way, surely many of you will be wondering what the hell is [...new Set(fruits)]
what the … (…) in this code is. Actually it is just a fairly new function in ES6 called Spread Operator
, if you have ever been in contact with Ruby, it will be quite similar to Splat Operator
. The Spread Operator allows converting a string into multiple arguments (in case of calling with the function) or into multiple elements (for arrays).
Visual example for you to understand.
1 2 3 4 5 6 7 | <span class="token keyword">var</span> arr1 <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">3</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> arr2 <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">6</span> <span class="token punctuation">,</span> <span class="token number">7</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token comment">//Bình thường muốn nối 2 mảng bạn có thể sử dụng:</span> arr1 <span class="token punctuation">.</span> <span class="token function">concat</span> <span class="token punctuation">(</span> arr2 <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Nhưng nếu sử dụng spread operator</span> <span class="token punctuation">[</span> <span class="token operator">...</span> arr1 <span class="token punctuation">,</span> <span class="token operator">...</span> arr2 <span class="token punctuation">]</span> |
In addition this Spread Operator also has some pretty good effects, you learn yourself offline.
2, Replace the values in the array
1 2 3 4 | <span class="token keyword">var</span> fruits <span class="token operator">=</span> <span class="token punctuation">[</span> “banana” <span class="token punctuation">,</span> “apple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “watermelon” <span class="token punctuation">,</span> “apple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “grape” <span class="token punctuation">,</span> “apple” <span class="token punctuation">]</span> <span class="token punctuation">;</span> fruits <span class="token punctuation">.</span> <span class="token function">splice</span> <span class="token punctuation">(</span> <span class="token number">0</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> “potato” <span class="token punctuation">,</span> “tomato” <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns [“potato”, “tomato”, “orange”, “watermelon”, “apple”, “orange”, “grape”, “apple”]</span> |
The splice () method adds / deletes items into an array and returns deleted items. splice(start, value to remove, valueToAdd)
3, Loop in the array
For example, there is an array:
1 2 3 4 5 6 7 8 9 | <span class="token keyword">var</span> friends <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> name <span class="token punctuation">:</span> ‘John’ <span class="token punctuation">,</span> age <span class="token punctuation">:</span> <span class="token number">22</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> name <span class="token punctuation">:</span> ‘Peter’ <span class="token punctuation">,</span> age <span class="token punctuation">:</span> <span class="token number">23</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> name <span class="token punctuation">:</span> ‘Mark’ <span class="token punctuation">,</span> age <span class="token punctuation">:</span> <span class="token number">24</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> name <span class="token punctuation">:</span> ‘Maria’ <span class="token punctuation">,</span> age <span class="token punctuation">:</span> <span class="token number">22</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> name <span class="token punctuation">:</span> ‘Monica’ <span class="token punctuation">,</span> age <span class="token punctuation">:</span> <span class="token number">21</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> name <span class="token punctuation">:</span> ‘Martha’ <span class="token punctuation">,</span> age <span class="token punctuation">:</span> <span class="token number">19</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> |
Now want to retrieve an array containing the name, normally many of you will do the usual way that is using the for loop as follows.
1 2 3 4 5 6 7 | arr <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> i <span class="token operator"><</span> friends <span class="token punctuation">.</span> length <span class="token punctuation">;</span> i <span class="token operator">++</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> arr <span class="token punctuation">.</span> <span class="token function">push</span> <span class="token punctuation">(</span> friends <span class="token punctuation">[</span> i <span class="token punctuation">]</span> <span class="token punctuation">.</span> name <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> arr <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
There is a faster way to use .map()
.
1 2 3 4 5 | <span class="token keyword">var</span> friend_names <span class="token operator">=</span> friends <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> fr <span class="token punctuation">,</span> index <span class="token punctuation">,</span> friends <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">return</span> fr <span class="token punctuation">.</span> name <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> friend_names <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Faster, isn’t it.
The map () function accepts three parameters (in order):
- The current element of the array.
- The index of the current element in the array.
- Original array.
A similar way to the .map()
method is the .from()
method.
1 2 3 | <span class="token keyword">var</span> friendsNames <span class="token operator">=</span> Array <span class="token punctuation">.</span> <span class="token keyword">from</span> <span class="token punctuation">(</span> friends <span class="token punctuation">,</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> name <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token operator">=></span> name <span class="token punctuation">)</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> friendsNames <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
4, Return an empty array
You have a full array of elements but you need to “clean” it for any purpose and you don’t want to delete each one individually? So easy
1 2 3 4 5 6 | <span class="token keyword">var</span> fruits <span class="token operator">=</span> <span class="token punctuation">[</span> “banana” <span class="token punctuation">,</span> “apple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “watermelon” <span class="token punctuation">,</span> “apple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “grape” <span class="token punctuation">,</span> “apple” <span class="token punctuation">]</span> <span class="token punctuation">;</span> fruits <span class="token punctuation">.</span> length <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> fruits <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns []</span> |
5, Convert array into object
If you want to use an object instead of a simple array type, you can use the Spread Operator
I just introduced.
1 2 3 4 | <span class="token keyword">var</span> fruits <span class="token operator">=</span> <span class="token punctuation">[</span> “banana” <span class="token punctuation">,</span> “apple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “watermelon” <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> fruitsObj <span class="token operator">=</span> <span class="token punctuation">{</span> …fruits <span class="token punctuation">}</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> fruitsObj <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns {0: “banana”, 1: “apple”, 2: “orange”, 3: “watermelon”, 4: “apple”, 5: “orange”, 6: “grape”, 7: “apple”}</span> |
Otherwise you can use the following:
1 2 3 | <span class="token keyword">var</span> fruits <span class="token operator">=</span> <span class="token punctuation">[</span> “banana” <span class="token punctuation">,</span> “apple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “watermelon” <span class="token punctuation">]</span> <span class="token punctuation">;</span> Object <span class="token punctuation">.</span> <span class="token function">assign</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> fruits <span class="token punctuation">)</span> |
These are both ways to use syntax in ES6.
6, Create an array of the same values
Here I introduce to you a method that I also know is the method .fill()
1 2 3 | <span class="token keyword">var</span> newArray <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Array</span> <span class="token punctuation">(</span> <span class="token number">10</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">fill</span> <span class="token punctuation">(</span> “ <span class="token number">1</span> ” <span class="token punctuation">)</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> newArray <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns [“1”, “1”, “1”, “1”, “1”, “1”, “1”, “1”, “1”, “1”, “1”]</span> |
7, join the array
There are many ways to combine arrays, such as using the for loop, then pushing the test, or using the .concat()
function. But one way I mentioned above is to use the Spread Operator
.
1 2 3 4 5 6 | <span class="token keyword">var</span> fruits <span class="token operator">=</span> <span class="token punctuation">[</span> “apple” <span class="token punctuation">,</span> “banana” <span class="token punctuation">,</span> “orange” <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> meat <span class="token operator">=</span> <span class="token punctuation">[</span> “poultry” <span class="token punctuation">,</span> “beef” <span class="token punctuation">,</span> “fish” <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> vegetables <span class="token operator">=</span> <span class="token punctuation">[</span> “potato” <span class="token punctuation">,</span> “tomato” <span class="token punctuation">,</span> “cucumber” <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> food <span class="token operator">=</span> <span class="token punctuation">[</span> …fruits <span class="token punctuation">,</span> …meat <span class="token punctuation">,</span> …vegetables <span class="token punctuation">]</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> food <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// [“apple”, “banana”, “orange”, “poultry”, “beef”, “fish”, “potato”, “tomato”, “cucumber”]</span> |
8, Find duplicate elements in 2 given arrays.
1 2 3 4 5 | <span class="token keyword">var</span> numOne <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">,</span> <span class="token number">6</span> <span class="token punctuation">,</span> <span class="token number">8</span> <span class="token punctuation">,</span> <span class="token number">8</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> numTwo <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">3</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">,</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">6</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> duplicatedValues <span class="token operator">=</span> <span class="token punctuation">[</span> … <span class="token keyword">new</span> <span class="token class-name">Set</span> <span class="token punctuation">(</span> numOne <span class="token punctuation">)</span> <span class="token punctuation">]</span> <span class="token punctuation">.</span> <span class="token function">filter</span> <span class="token punctuation">(</span> item <span class="token operator">=></span> numTwo <span class="token punctuation">.</span> <span class="token function">includes</span> <span class="token punctuation">(</span> item <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> duplicatedValues <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns [2, 4, 6]</span> |
Here using the .filter()
method .filter()
that you will return an array of values under certain conditions. And the .includes()
method simply checks to see if the value of an element is in the array.
9, Remove those values according to conditions
1 2 3 4 | <span class="token keyword">var</span> mixedArr <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">,</span> “blue” <span class="token punctuation">,</span> “” <span class="token punctuation">,</span> <span class="token number">NaN</span> <span class="token punctuation">,</span> <span class="token number">9</span> <span class="token punctuation">,</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> undefined <span class="token punctuation">,</span> “white” <span class="token punctuation">,</span> <span class="token boolean">false</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> trueArr <span class="token operator">=</span> mixedArr <span class="token punctuation">.</span> <span class="token function">filter</span> <span class="token punctuation">(</span> Boolean <span class="token punctuation">)</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> trueArr <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns [“blue”, 9, true, “white”]</span> |
You simply need to use the .filter()
function as I explained above.
10, Get random 1 element in the array
1 2 3 | <span class="token keyword">var</span> colors <span class="token operator">=</span> <span class="token punctuation">[</span> “blue” <span class="token punctuation">,</span> “white” <span class="token punctuation">,</span> “green” <span class="token punctuation">,</span> “navy” <span class="token punctuation">,</span> “pink” <span class="token punctuation">,</span> “purple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “yellow” <span class="token punctuation">,</span> “black” <span class="token punctuation">,</span> “brown” <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> randomColor <span class="token operator">=</span> colors <span class="token punctuation">[</span> <span class="token punctuation">(</span> Math <span class="token punctuation">.</span> <span class="token function">floor</span> <span class="token punctuation">(</span> Math <span class="token punctuation">.</span> <span class="token function">random</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span> colors <span class="token punctuation">.</span> length <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">]</span> |
11, Reverse the array
When you want to reverse an array, if you’re a beginner you will use the for loop to then browse from the last element to the first. But to make it simpler javascript gave birth to a short method called reverse()
.
1 2 3 4 | <span class="token keyword">var</span> colors <span class="token operator">=</span> <span class="token punctuation">[</span> “blue” <span class="token punctuation">,</span> “white” <span class="token punctuation">,</span> “green” <span class="token punctuation">,</span> “navy” <span class="token punctuation">,</span> “pink” <span class="token punctuation">,</span> “purple” <span class="token punctuation">,</span> “orange” <span class="token punctuation">,</span> “yellow” <span class="token punctuation">,</span> “black” <span class="token punctuation">,</span> “brown” <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> reversedColors <span class="token operator">=</span> colors <span class="token punctuation">.</span> <span class="token function">reverse</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> reversedColors <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns [“brown”, “black”, “yellow”, “orange”, “purple”, “pink”, “navy”, “green”, “white”, “blue”]</span> |
12, Find the last occurrence of an element in the array.
Just use lastIndexOf()
finish.
1 2 3 4 | <span class="token keyword">var</span> nums <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">6</span> <span class="token punctuation">,</span> <span class="token number">3</span> <span class="token punctuation">,</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">3</span> <span class="token punctuation">,</span> <span class="token number">6</span> <span class="token punctuation">,</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">7</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> lastIndex <span class="token operator">=</span> nums <span class="token punctuation">.</span> <span class="token function">lastIndexOf</span> <span class="token punctuation">(</span> <span class="token number">5</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> lastIndex <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// returns 9</span> |
13, Calculate the total value in the array
The easiest way is to use the for loop. For example
1 2 3 4 5 6 | <span class="token keyword">var</span> nums <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">6</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> total <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> i <span class="token operator"><</span> nums <span class="token punctuation">.</span> length <span class="token punctuation">;</span> i <span class="token operator">++</span> <span class="token punctuation">)</span> total <span class="token operator">+=</span> nums <span class="token punctuation">[</span> i <span class="token punctuation">]</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> total <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// return 14</span> |
This is a common use, and one more way is to use the .reduce()
method. You can use the function from the values available in the array to create a completely new value. As here is the sum
1 2 3 4 | <span class="token keyword">var</span> nums <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">6</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> sum <span class="token operator">=</span> nums <span class="token punctuation">.</span> <span class="token function">reduce</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> x <span class="token punctuation">,</span> y <span class="token punctuation">)</span> <span class="token operator">=></span> x <span class="token operator">+</span> y <span class="token punctuation">)</span> <span class="token punctuation">;</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> sum <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
.reduce()
can take multiple parameters.
- The first parameter is the initial value, usually we will lightning this value at the end of the function
- The second parameter is the current element in the array
Conclude
Above are some ways for you to easily use arrays in javascript.