gpt4 book ai didi

javascript - 在每个 nt-h 数组元素后插入新元素

转载 作者:行者123 更新时间:2023-11-30 07:50:31 26 4
gpt4 key购买 nike

我有一个名为 a 的数组,我想在数组 a 的每个 nt-h 元素之后插入一个元素。例如,我想将字符串 XXX 放在数组 a 的每个 3 元素之后,结果得到一个新数组 b 如下例所示:

let a = [undefined, "", 0, [], "ee", false, null, {},  Date(), true, (z)=>2*z, Array(0), NaN ];

let b = [undefined, "", 0, "XXX", [], "ee", false, "XXX", null, {}, Date(), "XXX", true, (z)=>2*z, [], "XXX", NaN];

console.log(a, b);

我试过这样做:

b = [];
a.map((x, i) => b.push((i + 1) % 3 ? x : "XXX"));

https://jsfiddle.net/Lamik/vjfaqn3u/16/

但是,有一个问题:输出 b 数组的长度与输入 a 的长度相同,这是错误的。任何想法或替代解决方案?

(更新:就地解决方案也可以;我剪切了数组 a)

最佳答案

这是一个使用 while 循环和 Array.splice() 的解决方案每 N 元素插入 token 的方法。此外,逻辑包含在一个函数中。

let insertTokenEveryN = (arr, token, n) => {

// Clone the received array, so we don't mutate the
// original one. You can ignore this if you don't mind.

let a = arr.slice(0);

// Insert the <token> every <n> elements.

let idx = n;

while (idx <= a.length)
{
a.splice(idx, 0, token);
idx += n + 1;
}

return a;
};

let array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
let res1 = insertTokenEveryN(array, "XXX", 2);
let res2 = insertTokenEveryN(array, "XXX", 3);
let res3 = insertTokenEveryN(array, "*", 4);

console.log(JSON.stringify(res1));
console.log(JSON.stringify(res2));
console.log(JSON.stringify(res3));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

关于javascript - 在每个 nt-h 数组元素后插入新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53892270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com