接受字符串并以整数形式返回输入中第二高的数字的函数

时间:2019-02-13 20:37:59

标签: javascript

我需要编写一个函数,该函数接受一个字符串并以整数形式返回输入中的第二高数字位,并且还遵循一些规则,但我无法使其正常工作。这是我到目前为止所拥有的:

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

3 个答案:

答案 0 :(得分:1)

尝试以下操作:

secondHighestDigit = function(input){

    var nums = [];
    for(var i = 0; i < input.length; i++){
        nums.push(parseInt(input[i]));
    }
    nums.sort();
    return nums[nums.length-2];

};

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

答案 1 :(得分:1)

我有这个答案:

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检查它是否不是数字。我想要相反的数字,所以我使用!!)

如果该值不在newarray中,则将其推(添加)到数组中

对数组进行排序,在数组的长度为2的位置获取数组的索引。

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

答案 2 :(得分:0)

我认为您的意思是该函数应返回2,因为这是列表中第二的最高数字,而不是3?

对@ A.J Uppal的代码段进行小的调整就是:

secondHighestDigit = function(input){

    var nums = [];
    for(var i = 0; i < input.length; i++){
        if(nums.indexOf(parseInt(input[i])) === -1)
          nums.push(parseInt(input[i]));
    }
    nums.sort();
    return nums[nums.length-2];

};

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

相关问题