Home > Software design >  How to create an array from seed values that fills the array with given max bound?
How to create an array from seed values that fills the array with given max bound?

Time:02-15

I need a function to create an array using 2 values such that:

  • length: used to determine the new array length
  • maxIndexValue: used to determine the max value at a given array index before starting back at 0.

example:

// length and maxIndexValue are integer values.
function buildArray(length, maxIndexValue){
  // TODO: Implementation
  return array;
}

let newArray = buildArray(16, 3)

// newArray should be [0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
console.log(newArray);

CodePudding user response:

You can easily achieve the result using % operator as

Array(length)
    .fill(0)
    .map((_, i) => i % (maxIndexValue   1));

or

new Array(length).fill(0).map((_, i) => i % (maxIndexValue   1));

function buildArray(length, maxIndexValue) {
  return Array(length)
    .fill(0)
    .map((_, i) => i % (maxIndexValue   1));
}

const length = 16,
  maxIndexValue = 3;
let newArray = buildArray(length, maxIndexValue);

console.log(newArray);

CodePudding user response:

This can be achieved using mod % operator.

function buildArray(length, maxIndexValue) {

  const arr = new Array(length);

  for (let a = 0; a < length; a  ) {
    // Using the mod % operator
    // 0 % 4 = 0
    // 1 % 4 = 1
    // 2 % 4 = 2
    // 3 % 4 = 4
    // 4 % 4 = 0
    // 5 % 4 = 1
    // .. so on
    arr[a] = a % (maxIndexValue   1);
  }

  return arr;
}

let newArray = buildArray(16, 3);
console.log(newArray);

  • Related