javascript - Javascript:找不到嵌套在对象中的数组的最大值
问题描述
我希望这段代码4
作为数组的最大值返回obj.key
,但是下面的代码却返回1
。
有人可以帮助解决这个问题,并以更短的方式实现这一目标吗?
var obj = {
key: [1, 2, 4]
}
function getLargestElementAtProperty(obj, key) {
if (!Array.isArray(obj[key])) {
return undefined
}
for (num in obj[key]) {
return Math.max(obj[key][num])
}
}
var output = getLargestElementAtProperty(obj, 'key');
console.log(output); // --> expected 4
解决方案
问题是一个函数只能返回一次。因此,当您第一次遍历数组并获得一个数组时,它会返回并且函数完成运行。Math.max()
从 0 个或多个数字返回最大值,因此如果您只传递一个数字,它将始终返回相同的数字。像下面这样的东西会起作用。
const obj = {
key: [1, 2, 4]
}
function getLargestElementAtProperty(obj, key) {
let largest;
if (!Array.isArray(obj[key])) {
return undefined
}
for (num in obj[key]) {
if (!largest || largest < obj[key][num]) {
largest = obj[key][num];
}
}
return largest;
}
var output = getLargestElementAtProperty(obj, 'key');
console.log(output); // --> expected 4
此外,如果您可以使用Math.max
扩展运算符以更现代的 JavaScript 方式实现相同的目的,如下所示:
const obj = {
key: [1, 2, 4]
}
function getLargestElementAtProperty(obj, key) {
if (!Array.isArray(obj[key])) {
return undefined
}
return Math.max(...obj[key]);
}
var output = getLargestElementAtProperty(obj, 'key');
console.log(output);
希望有帮助!
推荐阅读
- angular - Angular + Ng2 图表:图表未显示为子组件
- javascript - 输入命令后如何删除消息?
- postgresql - 在 PostgreSQL 中将实际的字符串和字符转换为数字
- spring - 子表在 JPA 中的 OneToMany 关系中没有映射
- php - 获取数据失败
- javascript - 在 API 调用完成之前快速解析路由
- java - Java ServiceLoaders、Tomcat、Apache CXF 和 Metro
- python-3.x - Pinterest 广告 API v3 - 代码 401 授权错误
- python - 将 python 请求响应加载到 tabula.read_pdf
- node.js - 将 post 变量与 querySelector 一起使用