如何使用遞迴在陣列的所有位置插入一個元素 - JavaScript?


我們需要宣告一個函式,比如說 insertAllPositions,它接收兩個引數 -

一個元素 x,和一個數組 arr。函式必須返回一個數組的陣列,其中每個陣列對應於插入 x 的某個可能位置的 arr。

也就是說,如果 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 ] ]

更新於: 2020 年 10 月 1 日

444 次觀看

啟動您的 職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.