我最好的選擇就是遞歸函數,但事先向可以在單線程中做到這一點的人提前感謝。鑑於:
const src = "1 0 0 1 1 1 0 0 0 0 0 1"
讓我們來定義breakStuff/2
爲:
function breakStuff(spaces, input) {
if (spaces.length == 0) return parseInt(input)
return _.map(_.split(input, _.first(spaces)), i => breakStuff(_.tail(spaces), i))
}
用例:
breakStuff([' ', ' ', ' '], src)
將返回:
[ [ [ 1, 0, 0 ], [ 1, 1, 1 ] ], [ [ 0, 0, 0 ], [ 0, 0, 1 ] ] ]
補遺:根據你的規範 - 雖然你自己的例子使用0
's和1
's - 結果應該由bool
組成。對於這一點,只是更改爲以下行:
if (spaces.length == 0) return input == '1'
這將返回:
[ [ [ true, false, false ], [ true, true, true ] ],
[ [ false, false, false ], [ false, false, true ] ] ]