Reputation: 67
I am teaching myself code and am trying to solve this problem:
Write a loop that loops through nums, if the item is even, it adds it to the evens array, if the item is odd, it adds it to the odds array.
This is what I have so far:
var nums = [1,2,34,54,55,34,32,11,19,17,54,66,13];
var evens = [];
var odds = [];
var evenNumbers = function(nums) {
for (var i = 0; i < nums.length; i++) {
if ((nums[i] % 2) != 1) {
evens.push(nums[i]);
console.log(evens);
}
else {
odds.push(nums[i]);
console.log(odds);
}
}
};
alert(evens);
alert(odds);
They don't return anything and I'm not sure where I'm going wrong, any help would be much appreciated.
Upvotes: 1
Views: 44045
Reputation: 13
function sortEvenOdd(arr, arrSize) {
let odd = [];
let even = [];
for (let i = arrSize - 1; i >= 0; i--) {
if (arr[i] % 2 !== 0) {
odd.push(arr[i]);
} else {
even.push(arr[i]);
}
}
even.sort(function (a, b) {
return a - b;
});
odd.sort(function (a, b) {
return b - a;
});
return [...odd, ...even];
}
// return odd and even numbers
/* Sample Input
7
1 2 3 5 4 7 10
Sample Output 7 5 3 1 2 4 10
Sample Input
7
0 4 5 3 7 2 1
Sample Output 7 5 3 1 0 2 4 */
Upvotes: 0
Reputation: 351
Someone can try according to the way:
function findOddEven(arr){
let odd=[],even=[],i=0,j=0,k=0;
for(i;i<arr.length;i++){
if(arr[i]%2==0){
even[j++]=arr[i]
}else{
odd[k++]=arr[i]
}
}
console.log("Even and Odd number",even,odd)
}
findOddEven([2,13,4,26,17])
Upvotes: 0
Reputation: 11
Here is a snippet :
const arr = [24,42,543,676,456,535,555];
console.log("Values: "+arr);
var even = arr.filter((number)=>number%2 === 0);
console.log("Even Number: "+even);
var odd = arr.filter((number)=>number % 2 !==0);
console.log("Odd Number: "+odd);
Upvotes: 0
Reputation: 21
function groupNumbers(arr) {
var arr = [1,2,3,4,5,6,7,8,9,10];
var evenNumbers = arr.filter(number => number % 2 == 0);
console.log("Even numbers " + evenNumbers);
var oddNumbers = arr.filter(number => number % 2 !== 0);
console.log("Odd numbers " + oddNumbers);
}
groupNumbers();
Upvotes: 2
Reputation: 499
//Even odd
var arrays = [1,2,34,54,55,34,32,11,19,17,54,66,13];
var result = arrays.filter((numbers)=>{
if(numbers%2!==0){
console.log(`${numbers} is not even`);
} else {
console.log(`${numbers} is even`);
}
});
Upvotes: 0
Reputation: 1546
I would recommend checking out the array.prototype.filter function with ES6 syntax:
const oddNumbers = [1,2,34,54,55,34,32,11,19,17,54,66,13].filter((number) => number%2!==0);
console.log(oddNumbers);
So elegant :)
Upvotes: 11
Reputation:
var rsl = {even:[], odd:[]};
[1,2,34,54,55,34,32,11,19,17,54,66,13].forEach(function(val,key,arr)
{
var wrd = (val % 2) ? 'odd' : 'even';
rsl[wrd][rsl[wrd].length] = val;
});
console.log(rsl);
Upvotes: 0
Reputation: 2085
You're not actually executing the function. You need to call evenNumbers();
var nums = [1,2,34,54,55,34,32,11,19,17,54,66,13];
var evens = [];
var odds = [];
var evenNumbers = function(nums) {
for (var i = 0; i < nums.length; i++) {
if ((nums[i] % 2) != 1) {
evens.push(nums[i]);
console.log(evens);
}
else {
odds.push(nums[i]);
console.log(odds);
}
}
};
evenNumbers(nums);
alert(evens);
alert(odds);
Upvotes: 9
Reputation: 59
You aren't actually calling your function, just defining it.
call:
evenNumbers(nums);
before alerting the arrays
Upvotes: 3