gpt4 book ai didi

javascript - 如何在对象数组中找到最长长度的数组?

转载 作者:行者123 更新时间:2023-12-02 15:27:34 24 4
gpt4 key购买 nike

我正在尝试提出一个函数,该函数返回数组中具有最长长度数组的对象。

问题是:

  • 编写一个函数,列出所有拥有最多武器的兽人。
  • 示例:

    var orcs = [{
    name: 'Orgoth',
    strength: 9001,
    weapons: ['Bone ax', 'Mace of Strength']
    }, {
    name: 'Blaroguhh',
    strength: 500,
    weapons: ['Cheeseburger', 'Spear of the Hut']
    }, {
    name: 'Mark',
    strength: 543,
    weapons: ['Ax of Defense', 'Dagger', 'Sword']
    }]
    getMostWeapons(orcs);
    // => {name: 'Mark', strength: 543, weapons: ['Ax of Defense', 'Dagger', 'Sword' ]}

    这就是我到目前为止所拥有的:

    function getMostWeapons(orcs) {
    var length = 0;
    return orcs.filter(function (obj) {
    return obj.filter(function (val) {
    if (val.length > length) {
    return (length = val.length);
    }
    });
    });
    }

    最佳答案

    .filter 用于返回所有符合条件的数组元素。由于在遍历完所有兽人之前你不知道最大长度,因此你无法一次性使用它来找到要返回的兽人。

    只需使用一个普通的循环来将武器的长度与迄今为止看到的最长武器的长度进行比较。如果更长,则用这个替换最长的。

    function getMostWeapons(orcs) {
    var longest = 0;
    var longestOrcs = [];
    orcs.forEach(function(orc) {
    if (orc.weapons.length > longest) {
    longestOrcs = [orc];
    longest = orc.weapons.length;
    } else if (orc.weapons.length == longest) {
    longestOrcs.push(orc);
    }
    });
    return longestOrcs;
    }

    关于javascript - 如何在对象数组中找到最长长度的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33559346/

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