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

对象数组中具有相同对象propertyB的javascript对象propertyA值的总和

孟增
2023-03-14
问题内容

一个人如何处理一个javascript对象数组,例如:

my objArr = [
{key:Mon Sep 23 2013 00:00:00 GMT-0400, val:42},
{key:Mon Sep 24 2013 00:00:00 GMT-0400, val:78},
{key:Mon Sep 25 2013 00:00:00 GMT-0400, val:23},
{key:Mon Sep 23 2013 00:00:00 GMT-0400, val:54}]

并通过将值相加来合并重复的键。为了得到这样的东西:

my reducedObjArr = [
{key:Mon Sep 23 2013 00:00:00 GMT-0400, val:96},
{key:Mon Sep 24 2013 00:00:00 GMT-0400, val:78},
{key:Mon Sep 25 2013 00:00:00 GMT-0400, val:23}]

我尝试迭代并添加到新数组,但这没有用:

var reducedObjArr = [];
var item = null, key = null;
for(var i=0; i<objArr.length; i++) {
   item=objArr[i];
   key = Object.keys(item)[0];
   item=item[key];

   if(!result[key]){
       result[key] = item;
   }else{
       result[key] += item;}
   }a

问题答案:

您应该使用属性将未找到的每个对象分配给结果.key

如果找到它,则需要添加它.val

var temp = {};
var obj = null;
for(var i=0; i < objArr.length; i++) {
   obj=objArr[i];

   if(!temp[obj.key]) {
       temp[obj.key] = obj;
   } else {
       temp[obj.key].val += obj.val;
   }
}
var result = [];
for (var prop in temp)
    result.push(temp[prop]);

另外,部分问题是您正在重用item变量来引用的值.key,因此您失去了对该对象的引用。



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

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

  • 我有一个对象数组,希望删除所有具有特定键值的对象。 该数组如下所示:

  • 本文向大家介绍JavaScript中的Array 对象(数组对象),包括了JavaScript中的Array 对象(数组对象)的使用技巧和注意事项,需要的朋友参考一下  1、创建Array对象方法: --->var arr = [1,2,3];//简单的定义方法 此时可以知道 此时可以知道: 2、Array对象属性 Array常见的属性有三个:constructor、length和prototyp

  • 问题内容: 假设您有一个非常简单的数据结构: …并且您想将其中一些存储在javascript变量中。如我所见,您有三个选择: 如果您要存储(或希望可能拥有)多个“价值”部分(例如,增加他们的年龄等),显然第二或第三种选择是可行的,因此,为了论证,让我们假设在此结构中再也不需要任何数据值了。您选择哪一个,为什么? 编辑 :该示例现在显示最常见的情况:非顺序ID。 问题答案: 每个解决方案都有其用例。