递归减少字符串或数组的方式? 示例案例:
如果有的话。变量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));
答案 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