我有一个数组:const arr = [1, 2, 5, 10]
;
如何将其转换为const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
?
答案 0 :(得分:4)
一种无需对迭代次数进行硬编码的简单方法就是从数组中获取最小值和最大值,然后将其填充在它们之间。
这是做到这一点的一种方式
const arr = [1, 2, 5, 10];
var highest = Math.max(...arr);
var minimum = Math.min(...arr);
var output = [];
for(var i = minimum; i <= highest; i++){
output.push(i);
}
console.log(output);
答案 1 :(得分:1)
这是一个基于Adriani6答案的单班轮解决方案:
const arr = [1, 2, 5, 10];
var highest = Math.max(...arr);
var minimum = Math.min(...arr);
const newArr = ([...Array(highest+1).keys()]).slice(minimum);
console.log(newArr);
答案 2 :(得分:1)
您可以使用嵌套的while
语句并拼接缺失的项目。
var array = [1, 2, 5, 10],
i = array.length;
while (i--) while (array[i - 1] + 1 < array[i]) array.splice(i, 0, array[i] - 1);
console.log(...array);
答案 3 :(得分:0)
const arr = [1, 2, 5, 10];
for(let i = 1; i <= 10; i++) { // Loop from 1 till 10, including 10
if (!arr.includes(i)) { // If arr does not include 'i'
arr.splice(i - 1, 0, i); // We insert it into the array
// -1, because arrays start at 0
}
}