Moving an array in JavaScript to populate two maps

var numerList = [1, 3, 7, 2, 4, 16, 22, 23]; var evenNoLst = numerList.map(function(no) { return ((no % 2) === 0); }); console.log(evenNoLst) 

Above the code, an even number map is created for me, now I also want to have a list of odd numbers. Do I need to go through the list of numbers again? or is there a way to have two cards using a single bypass array.

I am using Javascript.

+5
source share
5 answers

You can take the logical operator NOT and display all the logical values.

 var numerList = [1, 3, 7, 2, 4, 16, 22, 23], evenNoLst = numerList.map(no => no % 2 === 0), oddNoLst = evenNoLst.map(b => !b); console.log(evenNoLst); console.log(oddNoLst); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

When using one cycle

 var numerList = [1, 3, 7, 2, 4, 16, 22, 23], oddNoLst = [], evenNoLst = []; numerList.forEach(function (no) { var even = no % 2 === 0; evenNoLst.push(even); oddNoLst.push(!even); }); console.log(evenNoLst); console.log(oddNoLst); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

With a for ... of loop

 var numerList = [1, 3, 7, 2, 4, 16, 22, 23], oddNoLst = [], evenNoLst = [], no, even; for (no of numerList) { even = no % 2 === 0; evenNoLst.push(even); oddNoLst.push(!even); } console.log(evenNoLst); console.log(oddNoLst); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 
+6
source

Here you can divide it into reduce :

 var numberList = [1, 3, 7, 2, 4, 16, 22, 23]; var grouped = numberList.reduce(function (acc, x){ acc[x%2].push(x); return acc; }, [[], []]); console.log(grouped); 

The result is an array with two arrays inside: the first has even numbers, and the second has odd numbers.

+20
source

You can use array.prototype.reduce and some destructuring :

 var numberList = [1, 3, 7, 2, 4, 16, 22, 23]; var { evenList, oddList } = numberList.reduce((m, o) => { o % 2 === 0 ? m.evenList.push(o) : m.oddList.push(o); return m; }, { evenList: [], oddList: []}); console.log("evenList: ", evenList); console.log("oddList: ", oddList); 
+3
source

Use lodash groupBy is a more general patten.

 var _ = require('lodash'); var numerList = [1, 3, 7, 2, 4, 16, 22, 23]; var result = _.groupBy(numerList, function(ele) { return ele%2; }); console.log(result); //=> { '0': [ 2, 4, 16, 22 ], '1': [ 1, 3, 7, 23 ] } 

If you need to group an array into more than 2 groups, for example 3 groups, just

 var _ = require('lodash'); var numerList = [1, 3, 7, 2, 4, 16, 22, 23]; var result = _.groupBy(numerList, function(ele) { return ele%3; }); console.log(result); //=> { '0': [ 3 ], '1': [ 1, 7, 4, 16, 22 ], '2': [ 2, 23 ] } 
+2
source

try this using $filter

 const oddNumbers =[1, 3, 7, 2, 4, 16, 22, 23].filter((number) => number%2!==0); console.log(oddNumbers); const evenNumber= [1, 3, 7, 2, 4, 16, 22, 23].filter((number) => number%2===0); console.log(evenNumber); 
-1
source

Source: https://habr.com/ru/post/1275577/


All Articles