首页 > 解决方案 > 一个接受字符串并将输入中第二高的数字作为整数返回的函数

问题描述

我需要编写一个接受字符串并将输入中第二高的数字作为整数返回的函数,并且还要遵循更多规则,但我无法让它工作。这是我到目前为止所拥有的:

secondHighestDigit = function(input) {
  // Your code goes here
  var nr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
  var found_nr = [];
  var max = 0;
  var bmax = 0;

  for (var i = 0; i < 10; i++)
    for (var j = 0; j < input.length; j++) {
      if (nr[i] = input[j]) {
        found_nr.push(nr[i]);
      }
    }

  found_nr.sort();
  k = found_nr.length;
  return found_nr[k - 2];
};

console.log(secondHighestDigit("123123"));

secondHighestDigit("123123") 应该返回3

标签: javascript

解决方案


我有这个答案:

secondHighestDigit = function(input) {
    // Your code goes here
    let newArray = [];

    for (let char of input) {
        if (!isNaN(char)) {
            if (!(char in newArray)) {
                newArray.push(parseInt(char));
            }
        }
    }
    return newArray.sort()[newArray.length - 2]
};
console.log(secondHighestDigit("123123adsb"));

我创建了一个新数组。我循环遍历每个字符。如果字符是数字,继续。(isNaN 检查它是否不是数字。我想要相反的,所以我使用!)

如果该值尚未在新数组中,则将其推送(添加)到数组中

对数组进行排序,取数组长度 - 2 所在的数组索引。

let 是 ES6 JavaScript 变量名。它比 var 更容易使用。如果您为较新的浏览器(而不是 IE)开发,您应该使用它。


推荐阅读