【问题标题】:Iterate over a strings array and get a new string遍历字符串数组并获得一个新字符串
【发布时间】:2018-07-11 05:55:56
【问题描述】:

假设我有一个数组 names = ["CAT", "DOG"],我想遍历这个数组以获得一个新名称。要获得新名称,请将 cat 的“C”与“DOG”的“D”进行比较,“C”位于“D”之前,因此第一个字母将是“C”。

然后,我们将比较 CAT 的“A”和“DOG”的“D”,同样,“A”排在第一位,所以第二个单词将是“A”。到目前为止的单词是:“CA”。

然后我们将“CAT”的“T”与“DOG”的“D”进行比较,这次“D”在“T”之前,所以第三个单词将是“D”,依此类推..

最后一句话是:CADOGT

提前致谢。

【问题讨论】:

  • 请发布您目前尝试过的代码。
  • StackOverflow 是为了解决问题和回答问题,而不是在给出简要说明时创建代码。请创建一个 minimal, complete, and verifiable example 来说明您目前所尝试的内容。
  • 您的具体问题在哪里?看起来,你有一个手动工作的算法,只需要实现。首先,取一个结果集,取一个变量进行下一次比较并迭代长度并取第一个数组的一个字符,检查并分配并保存剩余的字符。对另一个数组执行相同操作并继续下一个索引。在并使用剩余字符。
  • 数组总是只包含 2 个字符串?还是可以更多?

标签: javascript


【解决方案1】:

正如我在 cmets 中所写,你可以

  • 获取结果集,
  • 一个变量用于下一次比较和
  • 迭代长度,
  • 取第一个数组的一个字符,
  • 检查并分配并保存剩余字符;
  • 对其他数组执行相同操作,然后
  • 继续下一个索引。
  • 在和使用剩余字符。

var array = ["CAT", "DOG"],
    temp = '',
    result = '',
    i,
    l = Math.max(...array.map(s => s.length));
    
for (i = 0; i < l; i++) {
    array.forEach(s => {
        if (!s[i]) { // early exit for smaller strings
            return;
        }
        if (temp < s[i]) {
            result += temp;
            temp = s[i];
        } else {
            result += s[i];
        }
    });
}

result += temp;

console.log(result);

【讨论】:

    猜你喜欢
    • 2022-09-23
    • 2014-03-07
    • 2021-06-30
    • 1970-01-01
    • 2017-04-28
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多