Javascript 获取最高的建筑物名称和高度

Javascript 获取最高的建筑物名称和高度,javascript,arrays,Javascript,Arrays,我有一个项目,我创建了一个嵌套的数据结构来查找最高的建筑名称和高度 以下是数据: let buildings =[ { name: "Burj Khalifa", height: 828 }, { name: "Shanghai Tower", height: 632 }, { name: "Lotte Tower", height: 555 },

我有一个项目,我创建了一个嵌套的数据结构来查找最高的建筑名称和高度

以下是数据:

let buildings =[
    {
        name: "Burj Khalifa",
        height: 828
    },
    {
        name: "Shanghai Tower",
        height: 632
    },
    {
        name: "Lotte Tower",
        height: 555
    },
    {
        name: "CTF Finance Centre",
        height: 803
    }
];
这就是解决方案:

function getTallestBuilding() {
    let height = 0;
    let buildingName = "";
    for (let building = 0; building < buildings.length; building++) {
        height = Math.max.apply(Math, buildings.map(function (o) {return o.height;
        }));
        buildingName = buildings[building].buildingName;
    }
    console.log("The tallest building's height is " + height + " and the name is " + buildingName);
}
函数gettalestbuilding(){ 设高度=0; 让buildingName=“”; 对于(让building=0;building 我只能知道大楼的高度,但名字总是最后一个,那就是CTF金融中心。它应打印为:

最高建筑的高度是828,名字是哈利法塔

使用

出租房屋=[
{
名称:“哈利法塔”,
身高:828
},
{
名称:“上海大厦”,
身高:632
},
{
名称:“乐天大厦”,
身高:555
},
{
名称:“CTF金融中心”,
身高:803
}
];
const tallestObj=建筑物。减少((a,b)=>a.高度>b.高度?a:b);

console.info(`最高建筑物的高度为${tallestObj.height},名称为${tallestObj.name}`)
您正在循环数组中的每个元素,因此循环完成后,
名称
是循环中的最后一个元素。为什么不对数组进行排序,然后抓住第一个/最后一个元素(取决于排序方向)以获得最高的值?@Taplar您可以这样做,但效率较低,因为这是O(n log(n))你可以在O(n)中做,就像OP正在做的一样。另外,你正在计算数组的
max
高度4次!您正在循环中进行每一次迭代。@DanielWStrimpel没有争论统计数据,但给定4个元素或实际数据,这真的很重要吗?谢谢您,我很好奇,但a和b做了什么?@reiko添加了链接。这只是比较两座建筑
a
是一栋建筑,
b
是一栋建筑。