当前位置: 首页 > 知识库问答 >
问题:

从具有多个约束的另一个对象数组中返回唯一对象数组

黄宏大
2023-03-14

我有一组这样的对象:

[{"name" : "Annie", "number" : 25},
{"name" : "Zeus", "number" : 25},
{"name" : "John", "number" : 40},
{"name" : "John", "number" : 32},
{"name" : "Zeus", "number" : 75},
{"name" : "Zeus", "number" : 32} ]

我想对其进行过滤,以便每个唯一名称都有一个实例,该实例必须给出小于或等于40的最大值。如果过滤,上述情况将返回

[{"name" : "Annie", "number" : 25},
{"name" : "John", "number" : 40},
{"name" : "Zeus", "number" : 32} ]

最终的数组不必按任何特定的顺序排序。

共有1个答案

柴茂材
2023-03-14

对于O(N)解决方案来说,这是一个相当简单的挑战。这样做的一个功能是:

function solution(A)
{
    var endObj = {};
    for (var i=0, ii=A.length; i<ii; i++)
    {
        var val = A[i];

        if (val.number > 40)
            continue;

        if (!endObj[val.name]) {
            endObj[val.name] = val;
            continue;
        }

        if (endObj[val.name].number < val.number)
            endObj[val.name] = val;
    }

    var endArr = [];
    for (var key in endObj)
        endArr.push(endObj[key]);

    return endArr;
}

我只是通过使用它们作为新对象的键来跟踪名称,然后在完成后将该对象转换为无键数组。

这里举个例子:https://jsfiddle.net/qa7vzvp5/

 类似资料:
  • 现在我有了新阵列 现在,现有的_array和新的_array都有名称值“b”,我希望它从新数组中移除

  • 问题内容: 在我目前正在从事的一个项目中,我遇到了一个角度异常: 在寻找解决方案的搜索中,我直接在浏览器中输入了Web服务的URL,但令人惊讶的是,我没有收到预期的数组。 Web服务类: 当我输入网址时,我希望看到带有JSON对象的JSON数组: 但是,相反,我收到的JSON对象的属性与我期望的JSON对象相同,没有任何数组: 所以我想知道为什么没有数组,当我添加另一个Clazz对象时会发生什么。

  • 问题内容: 我有两个表->变量(id,名称)和Variable_Entries(id,var_id,值)。 我希望每个变量都具有唯一的一组条目。如果我使值条目唯一,那么其他变量将无法具有相同的值,这是不正确的。 有什么办法可以使相同的var_id的value列唯一? 问题答案: 是的: 现在,您对var_id和value有了唯一的约束。换句话说,var_id和value的出现不能出现多次。

  • 因此,我有一个名为的对象数组,我需要获得每个球员的得分和犯规总数。 我的问题是我认为我使用了太多的 有没有更干净的解决方案? null null

  • 我试图从JSON检查并推送对象细节中的对象。 这就是我的JSON的样子 现在,我尝试读取属性集值[1]ie;“pagenum”。在这里,我试图用name检查更多属性值。如果不存在,则将其推入该属性集中。 由于属性集[0]位于数组中,所以我在将其推入属性集[0]时没有任何问题。这里我得到了属性集中的单个对象[1]。 尝试对属性集[1]执行此操作,但引发错误- 我可以成功地实现上面的代码,如果有一个数

  • 问题内容: 我正在尝试使用Flask和请求构建一个简单的代理。代码如下: 除丢失了Elasticsearch的状态代码外,此方法有效。我尝试直接返回(a ),但这失败了 还有另一种简单的从Flask返回a的方法吗? 问题答案: 好的,找到它: 如果返回一个元组,则该元组中的项目可以提供额外的信息。这样的元组必须采用格式(响应,状态,标题)。状态值将覆盖状态代码,并且标头可以是其他标头值的列表或字典