当前位置: 首页 > 面试题库 >

在一组对象中对相似的键求和[关闭]

唐伟
2023-03-14
问题内容

我有一个类似于以下对象的数组:

[
    {
        'name': 'P1',
        'value': 150
    },
    {
        'name': 'P1',
        'value': 150
    },
    {
        'name': 'P2',
        'value': 200
    },
    {
        'name': 'P3',
        'value': 450
    }
]

我需要将所有具有相同名称的对象的值相加。(可能还包括其他数学运算,例如计算平均值。)对于上面的示例,结果将是:

[
    {
        'name': 'P1',
        'value': 300
    },
    {
        'name': 'P2',
        'value': 200
    },
    {
        'name': 'P3',
        'value': 450
    }
]

问题答案:

首先遍历数组,然后将“名称”推入另一个对象的属性。如果属性存在,则将“值”添加到属性的值,否则将属性初始化为“值”。构建此对象后,请遍历属性并将其推入另一个数组。

这是一些代码

var obj = [

    { 'name': 'P1', 'value': 150 },

    { 'name': 'P1', 'value': 150 },

    { 'name': 'P2', 'value': 200 },

    { 'name': 'P3', 'value': 450 }

];



var holder = {};



obj.forEach(function(d) {

  if (holder.hasOwnProperty(d.name)) {

    holder[d.name] = holder[d.name] + d.value;

  } else {

    holder[d.name] = d.value;

  }

});



var obj2 = [];



for (var prop in holder) {

  obj2.push({ name: prop, value: holder[prop] });

}



console.log(obj2);

希望这可以帮助。



 类似资料:
  • 问题内容: 一个人如何处理一个javascript对象数组,例如: 并通过将值相加来合并重复的键。为了得到这样的东西: 我尝试迭代并添加到新数组,但这没有用: 问题答案: 您应该使用属性将未找到的每个对象分配给结果。 如果找到它,则需要添加它。 另外,部分问题是您正在重用变量来引用的值,因此您失去了对该对象的引用。

  • 如何处理对象的javascript数组,例如: 并通过求和这些值合并重复的键。为了得到这样的东西: 我尝试过迭代并添加到一个新数组中,但这没有起到作用:

  • 我试图在DynamoDB上使用“LIKE”搜索,在这里我有一个使用nodejs的对象数组。 通过查看文档和我看到的其他相关帖子,可以使用CONTAINS参数来实现这一点。 我的问题是-我是否可以在DynamoDB中对所有项目运行扫描或查询,其中对象中的值类似于“test2”。 这是我的发电机桌 这就是JSON的外观: 我正在尝试执行一个扫描/查询,它将检查所有用户(每一行),检查所有项目,并返回描

  • 之前在文章中说到,Jsoup使用了一套自己的DOM对象体系,和Java XML API互不兼容。这样做的好处是从XML的API里解脱出来,使得代码精炼了很多。这篇文章会说明Jsoup的DOM结构,DOM的遍历方式。在下一篇文章,我会并结合这两个基础,分析一下Jsoup的HTML输出功能。 DOM结构相关类 我们先来看看nodes包的类图: 这里可以看到,核心无疑是Node类。 Node类是一个抽象

  • 问题内容: 我想知道jQuery如何构造其类似数组的对象。我试图解决的关键问题是如何设法使控制台将其解释为数组并将其显示为数组。我知道它与length属性有关,但是在玩了一点之后我还是不太清楚。 我知道,与普通的数组(如下面的示例)相比,它没有技术优势。但是我认为这是用户进行测试和调试时的重要语义元素。 像对象一样的普通数组。 jQuery输出的位置 如果你跑 jQuery对象的原型特别有趣,因为

  • 问题内容: 我有一个Foo与这些领域的课程: id:int /名称;字符串 我得到了此类对象的数组列表。例如: 我想通过创建“ targetCost”和“ actualCost”的总和并将“行”分组来转换这些值 我现在写的是: 我怎样才能做到这一点? 问题答案: 使用是正确的方法,但不要使用单个参数版本来创建每个组的所有项目列表,而应使用两个arg版本,后者使用另一个参数版本Collector来确