簡體   English   中英

將列表理解 python 轉換為 javascript

[英]Convert list comprehension python to javascript

我正在嘗試將一些 python 代碼轉換為 JavaScript 代碼。

我有一個將參數a作為輸入的 python 列表理解。 a是一個字符串,例如“bac”。

asubstring = [a[i:i + j] for j in range(1, len(a) + 1) for i in range(len(a) - j + 1)]

輸出為: ['b', 'a', 'c', 'ba', 'ac', 'bac']

我通過執行以下操作將其轉換為 JavaScript:

let j = 1
let i = 0
while(j < aTrimmed.length+1) {
    while(i < aTrimmed.length - j + 1) {
       aSubstring.push(aTrimmed.slice(i, i+j))
       i++
    }
    j++
}

但是,我的輸出是: [ 'b', 'a', 'c' ]

我不確定我在兩個 while 循環中缺少什么。

使用for循環而不是while因為您忘記了在第二個循環結束時將i索引重置為 0。

let aTrimmed = "bac";
let aSubstring = [];


for(let j = 1; j < aTrimmed.length+1; j++) {
    for(let i = 0; i < aTrimmed.length - j + 1; i++) {
       aSubstring.push(aTrimmed.slice(i, i + j));
    }
}
alert(aSubstring);

問題是您沒有重置內部循環中的i變量。 在 Python 版本中, for i in range(...)總是讓i0開始。 此外,聲明一個迭代變量,然后使用以遞增該變量結束的while循環有點奇怪,為什么不使用for循環呢?

 let aTrimmed = "abc"; let aSubstring = []; for (let j = 1; j <= aTrimmed.length; j++) { for (let i = 0; i <= aTrimmed.length - j; i++) { aSubstring.push(aTrimmed.slice(i, i + j)); } } console.log(aSubstring);

還要注意<=而不是< ... + 1

此版本更適用於 Unicode 基本多語言平面之外的字符。 盡管字素簇仍然存在問題。

 let s1 = "abc" let s2 = "🧽🍿🛥" function substrings(s) { let us = [...s] let result = [] for (let j = 1; j <= us.length; j++) { for (let i = 0; i <= us.length - j; i++) { result.push(us.slice(i, i + j).join('')) } } return result } console.log(substrings(s1)) console.log(substrings(s2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM