javascript 数组按规律插入元素?

两个数组需要在 newArr 中拿取数据插入到 arr 中。

let arr = ['a','b','c','d','e','f','g','h','i','j','k','l','m']
let newArr = ['1','2','3','4','5','6','7','8','9','10']

参数说明:(p1:每次插入位置 p2:每次插入数量)

期待结果

参数
当 p1 = (5) 代表插入位置是 arr 5位
当 p2 = 2 代表插入两条, 在 newArr 中取两条插入

['a','b','c','d','e','1','2','f','g','h','i','j','k','l','m']

期待结果

参数
当 p1 = (1,3,5,7) 代表插入位置是 arr 1/3/5/7位
当 p2 = 2 代表插入两条, 在 newArr 中取两条插入

['1','2','a','b','c','3','4','d','e','5','6','f','g','7','8','h','i','j','k','l','m']
阅读 1.7k
2 个回答
function fn(p1, p2) {
    let arr = ['a','b','c','d','e','f','g','h','i','j','k','l','m']
    let newArr = ['1','2','3','4','5','6','7','8','9','10']
    if (!(p1.length && p2)) return false
    p1.forEach((v, i)=> {
        arr.splice(v + i * p2, 0, ...newArr.splice(0, p2))
    })
    return arr
}
console.log(fn([1,3,5,7], 2));
let arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"];
let newArr = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];

function solveIt(positions, count) {
    let pos1 = 0;
    let pos2 = 0;

    const segments = [];
    for (var i of positions) {
        segments.push(arr.slice(pos1, i));
        pos1 = i;

        segments.push(newArr.slice(pos2, pos2 + count));
        pos2 += count;
    }
    segments.push(arr.slice(pos1));
    return segments.flat();
}

console.log(solveIt([5], 2));
console.log(solveIt([1, 3, 5, 7], 2));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题