gpt4 book ai didi

javascript - 返回最大的数字 - JS

转载 作者:行者123 更新时间:2023-11-28 14:47:04 25 4
gpt4 key购买 nike

我在这里创建了一个函数,需要:

  1. 返回数组中最大的“数字”。
  2. 如果数组为空,则返回 0
  3. 如果数组中没有“数字”,则返回 0。
  4. 如果数组中有一个负数,则返回最大的负数。

现在,它适用于负数和空数组,但由于某种原因它不会显示最大的数字。

这是我的功能:

function largestNumber(arr) {

for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'number') {
var longestNumber = arr[i];
if (arr[i] > longestNumber) {
longestNumber = arr[i];
}
}
return longestNumber;
}

if (arr.length === 0) {
return 0;
}

}

var output1 = largestNumber([3, "word", 5, "up", 3, 1]);
console.log(output1); // --> must be 5 but display 3 (as the largest)

var output2 = largestNumber([-1, -5, "word", -3]);
console.log(output2); // --> -1

var output3 = largestNumber([]);
console.log(output3); // --> 0

var output4 = largestNumber(["word", 3, 5, 3, "wordy", "up", 1, 5]);
console.log(output4); // --> must be 5 instead returned undefined

知道是什么原因造成的吗?如何改进我的代码以获得预期结果?

最佳答案

函数中的这两行连续的行应该可以为您提供解决问题的线索:

var longestNumber = arr[i];
if(arr[i] > longestNumber){

您将当前数字设置为最长的数字,然后将其与相同的数字进行比较。

只需将上面的第一行移到 for 循环之外,并将其默认为零。您还必须将 return 移到循环之外,并稍微更改 if 逻辑以满足您的所有要求

function largestNumber(arr) {
var longestNumber = -Infinity;
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'number') {

if (arr[i] > longestNumber) {
longestNumber = arr[i];
}
}
}

if (longestNumber == -Infinity) {
longestNumber = 0;
}
return longestNumber;
}

var output1 = largestNumber([3, "word", 5, "up", 3, 1]);
console.log(output1); // --> must be 5 but display 3 (as the largest)

var output2 = largestNumber([-1, -5, "word", -3]);
console.log(output2); // --> -1

var output3 = largestNumber([]);
console.log(output3); // --> 0

var output4 = largestNumber(["word", 3, 5, 3, "wordy", "up", 1, 5]);
console.log(output4); // --> must be 5 instead returned undefined

关于javascript - 返回最大的数字 - JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45996372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com