Home > Software design >  How to get an array of booleans as answer for a parameter "under 10"?
How to get an array of booleans as answer for a parameter "under 10"?

Time:06-10

I want to evaluate whether the number is under than 10, having as an answer an array of booleans. I tried using forEach, map, but I didn't succeed in any attempt.

function underTen (arr){
  let underTenAnswer = arr.forEach(function(n){
    if (n < 10) {
      true;
    } else {
      false;
    }
  })
}

Input: underTen([1,9,12,19,4,16] Expected outcome: Array [True, True, False, False, True, False]

I'm a beginner, sorry if something is notoriously incorrect.

CodePudding user response:

There is a really quick way to do this:

let a = [1, 2, 3, 4, 5, 6, 7];
let b = [1, 2, 3, 4, 12, 8];

console.log(a.every((x) => x < 10)) // true
console.log(b.every((x) => x < 10)) // false

We use Array.every() here to check if each array element passes some condition.

If you need to return an array of booleans, then you can use Array.map():

let b = [1, 2, 3, 4, 12, 8];
console.log(b.map((x) => x < 10)) // [true, true, true, true, false, true]

CodePudding user response:

Edit 2: I thought I misunderstood the question but it seems this is what the OP wanted.

You can use the array helper every if you want to know if all array values match an expression:

array.every(number => number < 10);

Edit: I misunderstood the question.

To get an array with boolean values according to an expression applied to each value:

const newArray = array.map(number => number < 10);

CodePudding user response:

The question suggests the output is to be an array with boolean values corresponding to each value in the test array.

Array.map() is ideally suited to this problem. Working snippet:

const testArray = [1,9,12,19,4,16];

const resultsArray = testArray.map(element => (element < 10))

console.log(resultsArray)

CodePudding user response:

You're almost there. Use Array#map method; you have to return the result of map and the boolean values:

function underTen (arr){
  return arr.map(function(n) {
    if (n < 10) {
      return true;
    } else {
      return false;
    }
  })
}

console.log( underTen([1,9,12,19,4,16]) );

CodePudding user response:

You can use Array.map()

function underTen (arr){
  return arr.map(function(n){
    return (n < 10);
  })
}

console.log(underTen([1,9,12,19,4,16]));
 Expected outcome: Array [True, True, False, False, True, False]

CodePudding user response:

As @evolutionxbox told you, forEach is returning nothing, so...

function underTen (arr){
  let underTenAnswer = []
  
  arr.forEach(function(n){
    if (n < 10) {
      underTenAnswer.push(true);
    } else {
      underTenAnswer.push(false);
    }
  })
  return underTenAnswer
  
}

CodePudding user response:

You can achieve this using the map function:

let result = number_array.map( x => (x < 10));

  • Related