javascript - 如何获得每个数组的最大数量?
问题描述
挑战在于提供一组像这样的子数组:
[[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]
预期的结果应该是[27, 5, 39, 1001]
这个例子。
它希望我返回每个数组的最大数量。我尝试了以下解决方案。如果有人告诉它有什么问题,我将不胜感激。
function largestOfFour(arr) {
const result = [];
for(let i = 0; i < arr.length; i++){
for(let a = 0; a < arr[i].length; a ++){
var highestNumber = 0;
if(arr[i][a] > highestNumber){
highestNumber = arr[i][a];
}
}
result.push(highestNumber)
highestNumber = 0;
}
return result
}
提前致谢!
解决方案
您的代码中的问题是您highestNumber
在内部循环中初始化的地方。这意味着您的最大值会为内部数组中的每个元素重置。
相反,您应该在内部循环之外对其进行初始化。
如果要处理负值,还应该初始化highestNumber
为可能的最低负值,而不是0
.
function largestOfFour(arr) {
const result = [];
for(let i = 0; i < arr.length; i++){
var highestNumber = Number.MIN_SAFE_INTEGER; // <-- initialize here to lowest possible value
for(let a = 0; a < arr[i].length; a ++){
// var highestNumber = 0; // <-- move this up
if(arr[i][a] > highestNumber){
highestNumber = arr[i][a];
}
}
result.push(highestNumber)
highestNumber = 0;
}
return result
}
let arrays = [ [17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10] ];
console.log(largestOfFour(arrays))
使用更少代码的解决方案是用来Math.max
为您节省一些输入:
let arrays = [[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]];
let result = arrays.map(arr => Math.max(...arr));
console.log(result); // [27, 5, 39, 1001]
推荐阅读
- php - PHP:在一些文本之后获取文本
- json - Logstash 过滤,无法解析包含 JSON 数据的 .CSV
- google-apps-script - 是否有 API 可用于访问 Google 表格“探索”自动洞察?
- python-3.x - 将文件数据从 Azure Blob 存储访问到变量
- spring - GraalVm 与 Spring MVC
- c++ - 如何将 Beast Boost http 请求转换为字符串
- python - 使用 groupby 对数据进行分类以进行绘图
- python - 使用 Python 下载共享的 Google Drive 文件夹
- arrays - 如何从数组中查询子文档
- c# - 如何在 asp.net 核心中为 JwtBearer 和 System.IdentityModel.Tokens.Jwt 自定义不记名头关键字?