我有一个看起来像[1,0,3,0,5,0]的数组,我想要的是我想将零元素插入此数组[2,4,6]的元素,所以完整的数组应该看起来像这样[1,2,3,4,5,6]。
let a = [1,0,3,0,5,0]
let b = [2,4,6]
// expected output [1,2,3,4,5,6]
答案 0 :(得分:0)
您可以为索引取一个变量,以查找虚假值,然后在该索引处插入替换值。
let data = [1, 0, 3, 0, 5, 0],
replacements = [2, 4, 6],
i = 0;
for (const value of replacements) {
while (data[i]) i++;
data[i] = value;
}
console.log(data);
要获取新阵列,可以将数据阵列与替换阵列进行映射。
let data = [1, 0, 3, 0, 5, 0],
replacements = [2, 4, 6],
result = data.map(v => v || replacements.shift());
console.log(result);
答案 1 :(得分:0)
下面的工作方法:
x = [1,0,3,0,5,0]
y = [2,4,6]
j = 0;
for(i = 0; i < x.length; i ++) {
if(x[i] === 0 && j < y.length)
x[i] = y[j++];
}
console.log(x);
答案 2 :(得分:0)
您可以执行以下操作:
const a = [1,0,3,0,5,0];
const b = [2,4,6];
let lastIndex = 0;
for (let i = 0; i < b.length; i++) {
lastIndex = a.indexOf(0, lastIndex);
a[lastIndex] = b[i];
}
console.log(a);
答案 3 :(得分:0)
在这种情况下,您也可以使用forEach
作为变异解决方案:
let a = [1, 0, 3, 0, 5, 0, 7, 0];
let b = [2, 4, 6, 8]
a.forEach((i, j) => {
if (i === 0)
a[j] = b[~~(j / 2)] // integer division
})
console.log(a)