从另一个数组元素插入奇数位置元素

时间:2020-09-12 06:56:43

标签: javascript

我有一个看起来像[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]

4 个答案:

答案 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)