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
解决方案
我有这个答案:
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)开发,您应该使用它。
推荐阅读
- html - 如何将嵌入的 html 标签执行到像这样的角度值绑定中:{{variable}}?
- java - 确保接收到的 Rabbit MQ 事件的顺序
- encryption - 如何以编程方式解密 Vault 生成的 AES256-GCM96 密文并导出 Vault 密钥?
- angular - 给出角度路由器参数而不在 url 中
- sql-server-2008 - 如何使用 SSMS 连接到 MS Dynamics 365 CRM
- javascript - 如何将滚动高度设置为数组长度?
- imagemagick - 如何在 TYPO3 安装工具中调试 ImageMagick 图像处理?
- java - 在 TabLayout 和 ViewPager2 中执行异步任务后更新具有相同布局的多个片段
- java - 不能在 child() 中为参数 'pathString' 传递 null 这个问题的解决方案是什么?问题出在位置
- flutter - 不能循环遍历列表
并显示在 DataTable 中