假设我有一个数组:
const A = [1,2,3]
我想用 A
的元素填充另一个数组,例如 B
; B.length >> A.length
。
我对任何可以帮助创建以下形式的数组 B
的函数感兴趣:
[1,1,1,2,2,2,2,2,3,3,3,3,2,2,2,1,3,1]
A
元素到 B
的放置取决于指定的索引限制。元素1可以放置在B中的几个指定位置/间隔。B
的长度是已知的; N
是 B
的长度。
在我的试用中,我尝试使用 array.fill 函数,但不知道如何获取开始和结束索引。任何帮助将不胜感激。
const A = [1,2,3];
const B = [];
for (let k = 0; k < A.length; k++){
for (let j = 0; j < N; j++){
B.fill(A[k], start_index[j], end_index[j]);
}
}
最佳答案
由于您要使用 A
的相同元素填充 B
的多个范围,因此您需要一个具有多个 start/end/index
组合。
.fill()
本身不会扩展数组的长度,因此在追加新元素时需要调整长度。
const params = [
{index: 0, start: 0, end: 3},
{index: 1, start: 3, end: 8},
{index: 2, start: 8, end: 12},
{index: 1, start: 12, end: 15},
{index: 0, start: 15, end: 16},
{index: 2, start: 16, end: 17},
{index: 0, start: 17, end: 18}
];
const A = [1, 2, 3];
const B = [];
params.forEach(({index, start, end}) => {
if (B.length < end) {
B.length = end;
}
B.fill(A[index], start, end)
});
console.log(B);
关于javascript - 如何在 Javascript 中从小数组填充大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53106721/