如何使用递归-JavaScript将元素插入数组中的所有位置?
我们需要声明一个函数,比如insertAllPositions,它带有两个参数:
一个元素x和一个数组arr。函数必须返回一个数组数组,每个数组都与arr对应,并且x插入在可能的位置。
也就是说,如果arr是长度N,则结果是具有N+1数组的数组-
例如,insertAllPositions(10,[1,2,3])的结果应为-
const output = [ [10,1,2,3], [1,10,2,3], [1,2,10,3], [1,2,3,10] ];
我们只需要使用递归来编写此函数。
示例
以下是代码-
const arr = [1, 2, 3];
const num = 10;
const insertAllPositions = (num, arr) => {
return arr.length ?
[[num, ...arr]]
.concat(insertAllPositions(num, arr.slice(1))
.map(el => {
return [arr[0]].concat(el);
})) :
[[num]]
};
console.log(insertAllPositions(num, arr));输出结果
这将在控制台上产生以下输出-
[ [ 10, 1, 2, 3 ], [ 1, 10, 2, 3 ], [ 1, 2, 10, 3 ], [ 1, 2, 3, 10 ] ]
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法