繁体   English   中英

返回数组中的最大数(数组包含一个字符串)?

[英]Return the biggest number in the array (array contains a string)?

我不明白为什么我的代码不起作用,当我从逻辑上阅读它时,我觉得它应该起作用,但它所做的是返回 3,4,2 而不是 3 中的最高数字(即 4)

const array2 = ['a', 3, 4, 2] // should return 4

for(items of array2){
    if(items > 0) {
        console.log(Math.max(items));
}

我究竟做错了什么? 我误解了什么? 请不要给我答案,只是告诉我为什么我的逻辑不起作用

在 for 循环中, items实际上只是一项。 每次,您打印当前项目。 这基本上是一样的

const array2 = ['a', 3, 4, 2] // should return 4

for(items of array2){
    if (items > 0) {
        console.log(items);
    }
}

你只能这样做

const array2 = ['a', 3, 4, 2] // should return 4

console.log(Math.max(...array2.map(s => +s || Number.MIN_SAFE_INTEGER)));

签出: https://stackoverflow.com/a/44208485/16806649

如果它是纯整数数组,这就足够了:

const array2 = [3, 4, 2] // should return 4

console.log(Math.max(...array2));

我认为您不需要“For(arr 的项目)”,而是仅当数组的长度大于 0 时,console.log(Math.max(...arr) 应该可以工作。

请参阅下面的文档离子:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

  • 您只需要过滤数组。
  • 下面的示例我使用数组的filter()方法,然后将该filteredarray数组传递给Math.max() function。
  • isNan() function 对有效数字返回 false。
  • Math.max(...filteredArr)正在使用spred运算符来传递值。

 const arr = ['a', 3, 4, 2]; const filteredArr = arr.filter(val => { if (;isNaN(val)) return val. }) console.log(Math.max(..;filteredArr));

它返回 3,4,2,因为您正在使用 array2,并遍历数组的每个单独元素。 items 不是整个数组,它是单个元素,这就是单个元素的 Math.max 只是获得相同值的原因。

只是你需要过滤你的数组然后获得最大值,也在arrayFilters function 用于删除所有内容只返回这个数组的数字

 function arrayFilters(array){ const number = array.filter(element => typeof element === 'number') return number; } function getMaxValue(number){ return Math.max.apply(null,number) } const arr = ['a',2,3,4]; console.log(getMaxValue(arrayFilters(arr)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM