【问题标题】:Create strings using .reduce() in Javascript [duplicate]在 Javascript 中使用 .reduce() 创建字符串 [重复]
【发布时间】:2016-01-29 07:08:33
【问题描述】:

我需要能够获取一个字符串列表,并列出这些字符串的所有可能组合。

["asdf", "ghj","ew","ptum"]

它应该得到一个类似这样的列表,最多 n

["agep", "aget", "ageu", ... "fjwm"]

我该怎么做才能得到这些?

【问题讨论】:

  • 到目前为止你做了什么?
  • 你试过写代码吗?如果是,请添加代码。
  • agep 来自哪里?你的例子对我来说没有意义!
  • N!问题。循环 1 到 N-1,循环 2 到 N,组合,结束循环,结束循环。
  • @NguyenDoanTung agep,a 来自第一个字符串,g 来自第二个字符串,等等

标签: javascript string combinations


【解决方案1】:

您所问的内容相对简单......一些 for 循环可以很容易地做到这一点。以下是您可以使用的一种方法。

var input = ["asdf", "ghj", "ew", "ptum"];

function combinations(r, n) {
  var o = [];
  if (r.constructor.name === "String")
    r = r.split("");
  if (n.constructor.name === "String")
    n = n.split("");

  r.forEach(function(i) {
    n.forEach(function(j) {
      o.push(i + j);
    })
  })
  return o;
}

document.write("<pre>"+JSON.stringify(input.reduce(combinations),null,2)+"</pre>");

【讨论】:

  • 哇!!!!谢谢!我什至从来不知道reduce ... :(我每天都学到新东西。这以后会派上用场的。再次感谢。
  • 虽然这很好,但它不适用于少于 2 个字符串。就像我有字符串"io" 它应该同时得到i & o,但它没有。我只是要在字符串长度为 1 时传递每个字符,而不是做 reduce。
  • 不确定为什么要将它与单个字符串一起使用,因为您只需执行 "io".split("") 即可获得列表。您可以轻松过滤,但在您提供的上下文中,这样做并没有多大意义
【解决方案2】:

您可以从字符串列表中创建一个字母数组,就像您的情况一样 -> 字符串列表:

list = ["asdf", "ghj","ew","ptum"]

字母数组将是:-

arr = ["a","s",...,"m"]

然后遍历数组,将每个字母与数组中的其他字母组合...

逻辑会是这样的……

//for strings of length 3 ..
for(i in arr){
   for(j in arr){
      for(k in arr){
          if(i!=j && j!=k)
              result=i+j+k
                   }
                }
             }

p.s 我不是 JS,我只是告诉一个逻辑来做这件事,你现在可以用你的语言实现逻辑。

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 2018-01-02
    • 2015-01-22
    • 1970-01-01
    • 2014-10-24
    相关资源
    最近更新 更多