陣列的操作(2)
1、使用遞迴。對於給定字串中的每個字母,為字母建立字謎。使用map()將字母與每部分字謎組合,然後使用reduce()將所有字謎組合到一個陣列中,最基本情況是字串長度等於2或1。
const anagrams = str => { if (str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str]; return str.split(``).reduce((acc, letter, i) => acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), []); }; // anagrams(`abc`) -> [`abc`,`acb`,`bac`,`bca`,`cab`,`cba`] // anagrams(`讀好書`) -> ["讀好書", "讀書好", "好讀書", "好書讀", "書讀好", "書好讀"]
相當於資料裡的排列組合裡面的 全排列 個數就是 arr.length !
這裡介紹一些 reduce 。
mdn說:
reduce()
方法對累加器和陣列中的每個元素(從左到右)應用一個函式,將其減少為單個值。
var total = [0, 1, 2, 3].reduce(function(sum, value) { return sum + value; }, 0); // total is 6 var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) { return a.concat(b); }, []); // flattened is [0, 1, 2, 3, 4, 5]
可以簡單理解對 陣列的元素逐項做操作,下面是es6的寫法
var flattened = [[0, 1], [2, 3], [4, 5]].reduce( ( acc, cur ) => acc.concat(cur), [] );
詳細案例參考 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
更多有趣的陣列操作: http://news.51cto.com/art/201712/561035.htm
相關文章
- 陣列的reduce操作+物件陣列的map操作陣列物件
- [NOIP 2024 模擬2]陣列操作陣列
- 對陣列的操作陣列
- 陣列的基本操作陣列
- 陣列操作陣列
- vue陣列操作遇到坑-關於陣列操作Vue陣列
- 初識Java(Java陣列-陣列的基本操作)Java陣列
- 陣列的操作-變形陣列
- javascript陣列操作JavaScript陣列
- Scala陣列操作陣列
- Numpy陣列操作陣列
- JavaScript 陣列操作JavaScript陣列
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- JS常用陣列操作JS陣列
- JavaScript陣列常用操作JavaScript陣列
- Python陣列常用操作Python陣列
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- 2-7 陣列:動態陣列陣列
- numpy陣列(2)陣列
- JS常用陣列操作全解析JS陣列
- JavaScript 陣列常見操作 (二)JavaScript陣列
- JavaScript 陣列常見操作(一)JavaScript陣列
- javascript中常用的陣列操作方法,以及是否會改變原始陣列JavaScript陣列
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- js陣列操作——物件陣列根據某個相同的欄位分組JS陣列物件
- C++ 獲取陣列大小、多維陣列操作詳解C++陣列
- 陣列(2)陣列運算及典例(求解素數的方法)陣列
- ARM彙編和C語言混合程式設計中陣列的陣列的操作C語言程式設計陣列
- JS陣列的幾個有逼格操作JS陣列
- JavaScript的字串、陣列以及DOM操作總結JavaScript字串陣列
- js陣列操作方法小結JS陣列
- GO 陣列操作四個小案例Go陣列
- 1441 用棧操作構建陣列陣列
- PHP:常用PHP陣列操作函式PHP陣列函式
- NumPy之:ndarray多維陣列操作陣列
- 樹狀陣列3種基本操作陣列
- iOS開發·必會的演算法操作:字串陣列排序+模型物件陣列排序iOS演算法字串陣列排序模型物件
- 陣列及陣列物件操作 ----------包括排序,去重,合併,翻轉等陣列物件排序
- 資料結構2——陣列資料結構陣列