从数组中找到所有缺少的字母[重复]

问题描述 投票:1回答:3

这个问题在这里已有答案:

下面是我在数组中找到丢失字母的代码:

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”。

javascript arrays loops
3个回答
2
投票

您不需要返回函数中的每个字母,而是返回数组或字符串

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


3
投票

您需要将值存储在数组或字符串中,并在最后返回,而不是立即返回

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"));

1
投票

您不能返回多个值,因此要返回一个值集合,它必须是数组或字符串。对函数进行最简单的修改就是将找到的值推送到数组中。

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.