假设我有一个数组:
const A = [1,2,3]
,我想用B
的元素填充另一个数组,例如A
; 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]);
}
}
答案 0 :(得分:1)
由于要用B
的相同元素填充A
的多个范围,因此需要具有多个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);
答案 1 :(得分:0)
为了凝聚巴尔玛的建议:
const params = [
{index: [0,1,2,1,0,2,0], start: [0,3,8,12,15,16,17], end: [3,8,12,15,16,17,18]}
];
const A = [1, 2, 3];
const B = [];
for (let j=0; j<7;j++){
params.forEach(({index, start, end}) => {
if (B.length < end[j]) {
B.length = end[j];
}
B.fill(A[index[j]], start[j], end[j])
});
}
console.log(B);