使用chartCodeAt递归以减少字符串

时间:2019-01-15 14:22:28

标签: javascript arrays sorting for-loop recursion

递归减少字符串或数组的方式? 示例案例:

如果有的话。变量abcdfgh4zi的输出必须为f4z

因为在d之后必须为e,然后在h之后必须为I 喜欢排序...

我正在尝试,但是使用charCodeAt

失败

function reduce(data) {
  let result = ""
  if (data.length <= 1) {
    return result
  } else if (data.charCodeAt(data[0])+1  !==  data.charCodeAt(data[1])) {
    result += data[0]
  }
  return result + reduce(data.slice(1))

}

console.log(reduce('abcdfgh4zi')); // f4z

结果与该数据相同,如果我使用<,它将为空字符串

如果数据"lmnop"为真,并且由于它们正在排序,它将返回empty string

在这里找到我在SO中找到的下一个字母,如果chartCodeAt不起作用

var abc = (parseInt(data[0], 36) + 1) % 36;
 var nextAlphabet = ((!abc * 10 + abc).toString(36));

1 个答案:

答案 0 :(得分:0)

charCodeAt需要一个索引,您正在为其指定字符。所以您正在做data.charCodeAt("a") + 1 !== data.charCodeAt("b")

您还将存储第一个字符,因此将存储“ d”而不是“ f”

function reduce(data) {
  let result = ""
  if (data.length <= 1) {
    return result
  } else if (data.charCodeAt(0)+1  !==  data.charCodeAt(1)) {
    result += data[1]
  }
  return result + reduce(data.slice(1))

}

console.log(reduce('abcdfgh4zi')); // f4z