首页 > 解决方案 > 在Javascript中将基于其他数组值的数组填充到所需的数字

问题描述

我正在寻找一个函数say populateAnimalArray,它将一个数组作为输入,并根据它作为另一个参数的数字将数组填充到所需的数字

const animals = ['lion', 'tiger', 'cheetah', 'zebra'];
const animalArr = [];
populateAnimalArray(animals, 6);
// Required output: ['lion', 'tiger', 'cheetah', 'zebra', 'lion', 'tiger']

我尝试了以下方法,它并不总是有效。

const animals = ['lion', 'tiger', 'cheetah', 'zebra'];
const animalArr = [];


function populateAnimalArray(arr, no) {
  arr.forEach(val => animalArr.push(val));
  let deficitElem; //
  if (animalArr.length < no) {
    deficitElem = no - animalArr.length;
    console.log('deficitElem', deficitElem);
    for (let i = 0; i < deficitElem; i++) {
      animalArr.push(animals[i]);
    }
  }
  console.log('animalArr', animalArr);
}

populateAnimalArray(animals, 14);

标签: javascript

解决方案


您使这项任务过于复杂。如果no小于,则可以简单地对数组进行切片,否则可以使用(模)运算符arr.length进行推送:%

const animals = ['lion', 'tiger', 'cheetah', 'zebra'];
const animalArr = [];


function populateAnimalArray(arr, no) {

 if (no < arr.length) return arr.slice(0, no);
 
 for (let i = 0; i < no; i++) {
 
  animalArr.push(arr[i % arr.length]);
 }
 
 return animalArr;
}

const res = populateAnimalArray(animals, 14);
console.log(res);


推荐阅读