如何在JavaScript中按如下输出遍历两个数组的对象

如何在JavaScript中按如下输出遍历两个数组的对象,javascript,node.js,angular,typescript,ecmascript-6,Javascript,Node.js,Angular,Typescript,Ecmascript 6,我有两个数组对象,我想将其处理为以下输出 var parts={"Glenn": [12,22,32], "Ryan": [13,23,33], "Steve K": [14], "Jerom":[15,25,35], }; var labor={ "Glenn": [12,22,32], "Ryan": [13,23,33], "Steve K": [14], "Nike":[16,26,36] }; //Target output [{person:"Glenn",count:6}

我有两个数组对象,我想将其处理为以下输出

var parts={"Glenn": [12,22,32],
"Ryan": [13,23,33],
"Steve K": [14],
"Jerom":[15,25,35],
};

var labor={
"Glenn": [12,22,32],
"Ryan": [13,23,33],
"Steve K": [14],
"Nike":[16,26,36]
};

//Target output   
[{person:"Glenn",count:6},
{person:"Ryan",count:6},
{person:"Steve K",count:2},
{person:"Jerom",count:3},
{person:"Nike",count:3}
];

这里count表示数组的长度与key和person有关,如果key匹配,则添加其数组长度并将其分配给count,key显示为person,如果不匹配,则将其复制到新数组中。请帮助我如何实现上述数组对象参见以下使用循环的代码:

var部分={
格伦:[12,22,32],
瑞安:[13,23,33],
“Steve K”:[14],
杰罗姆:[15,25,35]
};
劳动价值={
格伦:[12,22,32],
瑞安:[13,23,33],
“Steve K”:[14],
耐克:[16,26,36]
};
变量计数={};
//反复浏览各个部分并保持计数
用于(输入零件){
如果(输入计数){
计数[键]+=零件[键]。长度;
}否则{
计数[键]=零件[键]。长度;
}
}
//重复劳动并保持计数
用于(让输入劳动力){
如果(输入计数){
计数[键]+=人工[键]。长度;
}否则{
计数[键]=人工[键]。长度;
}
}
var-res=[];
//迭代计数并转换为数组
用于(让输入计数){
再推({
人:钥匙,,
计数:计数[键]
})
}

将这两个阵列组合起来并减少它们

这应该起作用:

var parts = {
  "Glenn": [12, 22, 32],
  "Ryan": [13, 23, 33],
  "Steve K": [14],
  "Jerom": [15, 25, 35],
};

var labor = {
  "Glenn": [12, 22, 32],
  "Ryan": [13, 23, 33],
  "Steve K": [14],
  "Nike": [16, 26, 36]
};

const combined = [...Object.entries(parts), ...Object.entries(labor)];
const result = combined.reduce((res, curr) => {
  const existing = res.find(e => e.person === curr[0]);
  if (existing) {
    existing.count += curr[1].length;
  } else {
    res.push({
      person: curr[0],
      count: curr[1].length
    })
  }
  return res;
}, []);

您可以从这两个对象中创建一组所有唯一键,然后在该组上迭代,根据
部分
人工
对象中相应元素的长度生成一个结果对象:

var部分={
“格伦”:[12,22,32],
“Ryan”:[13,23,33],
“Steve K”:[14],
“杰罗姆”:[15,25,35],
};
劳动价值={
“格伦”:[12,22,32],
“Ryan”:[13,23,33],
“Steve K”:[14],
“耐克”:[16,26,36]
};
let keys=新集合([…Object.keys(零件),…Object.keys(人工)];
让结果={}
keys.forEach(k=>result[k]=(result[k]| | 0)+(parts[k]| |[]).length+(人工[k]| |[]).length);

控制台日志(结果)迭代两个数组以查找发生的情况,然后增加计数
var部分={
格伦:[12,22,32],
瑞安:[13,23,33],
“Steve K”:[14],
杰罗姆:[15,25,35]
};
劳动价值={
格伦:[12,22,32],
瑞安:[13,23,33],
“Steve K”:[14],
耐克:[16,26,36]
};
var-arr=[];
for(让对象的[key,value]项(部分)){
arr.push({
人:钥匙,,
count:value.length
});
}
for(让对象的[key,value]项(人工)){
const found=arr.find(elem=>elem.person==key);
如果(找到){
found.count+=value.length;
}否则{
arr.push({
人:钥匙,,
count:value.length
});
}
}

控制台日志(arr)
Hi,我在Node.js中尝试了这门课程,然后工作正常,但在Angular I gor错误中,如“ObjectConstructor”类型上不存在属性“entries”,我已将其更新到ES2017,但存在与curr[1]相关的错误。长度属性“length”在“{}”类型上不存在。您做错了什么,
curr[1]
是一个数组。这里Jerom和nike没有出现是什么意思?我的目标输出是//target output[{person:“Glenn”,count:6},{person:“Ryan”,count:6},{person:“Steve K”,count:2},{person:“Jerom”,count:3},{person:“nike”,count:3}];当我运行这个代码时,我没有得到{person:“Jerom”,count:3},{person:“Nike”,count:3}