Javascript 映射数组以查找子数组中属于不同对象的元素之和

Javascript 映射数组以查找子数组中属于不同对象的元素之和,javascript,arrays,Javascript,Arrays,希望标题不够神秘:)。我试图更好地解释这个问题:这个数组包含以下数据(示例) 我将这些项目放在一个数组中,因为有时可能不止一个。现在我的问题是:我如何才能找到这些项目的总和,所以它将是4?(第一个数组有一个元素,第二个有两个元素,最后一个1)我不知道为什么我和这些家伙玩得这么开心。。。我尝试映射item属性,然后使用reduce函数,但它将我向后打开一个数组。。。 感谢大家的帮助您可以使用。reduce计算项的长度之和列表: const数据=[ {名称:“Bob”,项目:[1]}, {名称:“

希望标题不够神秘:)。我试图更好地解释这个问题:这个数组包含以下数据(示例)

我将这些项目放在一个数组中,因为有时可能不止一个。现在我的问题是:我如何才能找到这些项目的总和,所以它将是4?(第一个数组有一个元素,第二个有两个元素,最后一个1)我不知道为什么我和这些家伙玩得这么开心。。。我尝试映射item属性,然后使用reduce函数,但它将我向后打开一个数组。。。
感谢大家的帮助

您可以使用
。reduce
计算
项的长度之和
列表:

const数据=[
{名称:“Bob”,项目:[1]},
{名称:“查理”,项目:[1,2]},
{名称:“克里斯”,项目:[5]}
];
const sum=data.reduce((总计,{items=[]})=>total+items.length,0);

控制台日志(总和)
您可以使用
.reduce
来计算
项目
列表的长度总和:

const数据=[
{名称:“Bob”,项目:[1]},
{名称:“查理”,项目:[1,2]},
{名称:“克里斯”,项目:[5]}
];
const sum=data.reduce((总计,{items=[]})=>total+items.length,0);
控制台日志(总和)请尝试以下操作:

var sum = 0;
for (var i = 0; i < data .length; i++) {
  var object = arrayOfObjects[i];
  sum += object.items.length;
}

var总和=0;
对于(变量i=0;i
在for循环中迭代JSON数组中的对象,并添加项目数组的总和

尝试以下操作:

var sum = 0;
for (var i = 0; i < data .length; i++) {
  var object = arrayOfObjects[i];
  sum += object.items.length;
}

data.filter(ele => {
  var summ = ele.items.reduce((sum, current) => sum + current, 0);
  if(summ === 9) return ele
})
var总和=0;
对于(变量i=0;i

在for循环中迭代JSON数组中的对象并添加项数组的总和

对不起,我的问题是:如何找到这些项的总和,使其为4?(第一个数组有一个元素,第二个数组有两个元素,最后一个数组为1)。所以我想要的不是数字的总和,而是里面的实际元素(我不能使用es2019编译器,所以如果可能的话没有平面图。)@ChirstianaEriksten我更新了答案,根据我从问题中了解到的,你想要得到项目列表中元素数量的总和,我提出了一个错误的问题:我如何才能找到这些项目的总和,使之成为4?(第一个数组有一个元素,第二个数组有两个元素,最后一个数组为1)。所以我想要的不是数字的总和,而是里面的实际元素(我不能使用es2019编译器,所以如果可能的话没有平面图。)@ChirstianaEriksten我更新了答案,根据我从问题中了解到的,你想要得到项目列表中元素数量的总和,我提出了一个错误的问题:我如何才能找到这些项目的总和,使之成为4?(第一个数组有一个元素,第二个数组有两个元素,最后一个数组为1)。所以我想要的不是数字的总和,而是实际的元素inside@ChirstianaEriksten我已经编辑了我的答案,只要把所有项目的长度加起来,如果这是你想要的,对不起,我的问题是错误的:我怎样才能找到这些项目的总和,所以它是4?(第一个数组有一个元素,第二个数组有两个元素,最后一个数组为1)。所以我想要的不是数字的总和,而是实际的元素inside@ChirstianaEriksten我已经编辑了我的答案,只要把所有项目的长度加起来,如果这是你想要的,对不起,我的问题是错误的:我怎样才能找到这些项目的总和,所以它是4?(第一个数组有一个元素,第二个数组有两个元素,最后一个数组为1)。所以我不想数字的和,而是内部的实际元素,我提出的问题是:我怎么能找到这些项的总和,所以它是4?(第一个数组有一个元素,第二个数组有两个元素,最后一个数组为1)。所以我想要的不是数字的总和,而是里面的实际元素
data.filter(ele => {
  var summ = ele.items.reduce((sum, current) => sum + current, 0);
  if(summ === 9) return ele
})