javascript - 在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);
解决方案
您使这项任务过于复杂。如果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);