我正在嘗試檢索字串陣列中的第一個字母和繼續字母。我一直在做的是回圈遍歷每個專案,然后列印 arr[i][0],但這不適用于后續的字母。
例如:
Input:
'
00100
11110
10110
Output:
011010111011000
基本上,我想垂直遍歷,而不是水平遍歷。
function solution(s) {
// transform string into array
let arr = s.split('\n')
for (let i = 0; i < arr.length; i ) {
// log the first, then proceeding letter in each string
console.log(arr[i][0])
}
}
console.log(
solution(`00100
11110
10110
`)
)
uj5u.com熱心網友回復:
您可以為每一行再次拆分和拆分,并使用轉置的字符映射一個新陣列。
function solution(s) {
return s
.split('\n')
.reduce((r, s) => [...s].map((c, i) => (r[i] || '') c), [])
.join('');
}
console.log(solution('00100\n11110\n10110'));
uj5u.com熱心網友回復:
使用嵌套for回圈:
function solution(s) {
// transform string into array
let arr = s.split('\n')
for (let i = 0; i < arr[0].length; i ) {
for(let f = 0; f < arr.length; f ){
console.log(arr[f][i])
}
}
}
console.log(solution(`00100
11110
10110`))
uj5u.com熱心網友回復:
將矩陣的行轉換為列(反之亦然)是一種稱為transposition的操作。一個簡單的轉置函式可能如下所示:
const transpose = (xs) =>
xs [0] .map ((_, i) => xs .map (r => r [i]))
但是,您沒有陣列陣列。在換行符上拆分輸入后,您將擁有一個字串陣列。但是我們可以很容易地改變這個函式,使它可以在任何可迭代物件上作業。它仍然會回傳一個陣列陣列,但我們可以輕松地將它包裝在一個函式中,該函式將輸出轉換為一個字串陣列;讓我們稱之為inColumns。
然后我們將它包裝成一些東西,將您的字串決議為一個字串陣列,呼叫,inColumns然后將結果合并為一個字串。我們可以稱它為,比如說adventOfCodeDay3:
const transpose = (xs) =>
[... xs [0]] .map ((_, i) => [... xs] .map (r => r [i]))
const inColumns = (xs) =>
transpose (xs) .map (s => s.join (''))
const adventOfCodeDay3 = (s) =>
inColumns (s .split ('\n')) .join ('')
const input = `00100
11110
10110`
console .log (adventOfCodeDay3 (input))
我發現這種故障是解決問題的更簡潔的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375384.html
標籤:javascript 算法 循环
上一篇:高度分散的人
