这个问题在这里已有答案:
下面是我在数组中找到丢失字母的代码:
function missingletter(str) {
var nums = str.split('').map(function(letter){
return letter.charCodeAt();
})
for(var i=0; i<nums.length; i++){
if(nums[i+1] - nums[i] >1){
return String.fromCharCode(nums[i]+1)
}
}
return undefined
}
missingletter("abce");
函数中的for循环在立即找到缺失的字母时停止。
如果我想让循环遍历数组中的每个元素并返回每个丢失的字母,我应该如何修改此代码?例如,使用missingletter(“abceghj”)获取返回值“d”,“f”,“i”。
您不需要返回函数中的每个字母,而是返回数组或字符串
function missingletter(str) {
var missing = [], nums = str.split('').map(function(letter){
return letter.charCodeAt();
})
for(var i=0; i<nums.length; i++){
if(nums[i+1] - nums[i] >1){
missing.push(String.fromCharCode(nums[i]+1))
}
}
return missing
}
console.log(missingletter("abce"));
console.log(missingletter("abceghj"));
要想有一个能够处理重复和错误订单的更可靠的解决方案,请查看Marcus的解决方案:https://codepen.io/marcusparsons/pen/YYxrpG
您需要将值存储在数组或字符串中,并在最后返回,而不是立即返回
function missingletter(str) {
var nums = str.split('').map(function(letter){
return letter.charCodeAt();
})
const mis = [];
for(var i=0; i<nums.length; i++){
if(nums[i+1] - nums[i] >1){
mis.push(String.fromCharCode(nums[i]+1))
}
}
return mis
}
console.log(missingletter("abcegi"));
您不能返回多个值,因此要返回一个值集合,它必须是数组或字符串。对函数进行最简单的修改就是将找到的值推送到数组中。
function missingletter(str) {
var result = [];
var nums = str.split('').map(function(letter){
return letter.charCodeAt();
});
for (var i = 0; i < nums.length; i++) {
if(nums[i + 1] - nums[i] > 1) {
result.push(String.fromCharCode(nums[i]+1));
}
}
return result;
}