将列表理解python转换为javascript

2024-05-29 04:02:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一些python代码转换为JavaScript代码

我有一个python列表理解,它将参数a作为输入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循环中缺少了什么


Tags: 字符串代码in列表for参数lenrange
3条回答

此版本更适用于Unicode基本多语言平面之外的字符。尽管grapheme集群仍然存在问题

&13; 第13部分,;
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))
和#13;
和#13;

问题是您没有重置内部循环中的i变量。在Python版本中,for i in range(...)总是使i0开始。另外,声明一个迭代变量,然后使用while循环(以增加该变量为结尾)有点奇怪,为什么不直接使用for循环呢

&13; 第13部分,;
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);
和#13;
和#13;

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

使用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);

相关问题 更多 >

    热门问题