繁体   English   中英

如何比较node.js中的两个arrays

[英]How to compare two arrays in node.js

我有两个 arrays。

let runArray = ['Welcome', 'Hello']

let data = [{
  Node:'Good',
  Session:'2',
  Run:'Welcome',
  Run_Group:'Display',
  Elapsed_Ms: '1000'
}]

我在data数组中有 2600 个对象,在runArray中有 50 个对象。 而且元素的数量可能更多。

重点是将runArray中的每个索引与data[index].Run属性进行比较,以便我可以计算Elapsed_Ms属性的平均值(来自数据)。

有什么选择吗?

再见,这里是一个工作示例:

 let runArray = ['Welcome', 'Hello']; let data = [{Node:'Good', Session:'2', Run:'Welcome', Run_Group:'Display', Elapsed_Ms: '1000'}, {Node:'Good', Session:'2', Run:'Welcome', Run_Group:'Display', Elapsed_Ms: '500'}, {Node:'Good', Session:'2', Run:'Hello', Run_Group:'Display', Elapsed_Ms: '1000'}]; let averages = []; runArray.map(el => { let filteredArray = data.filter(dat => dat.Run === el); let avg = filteredArray.reduce((a, b) => a + parseInt(b.Elapsed_Ms), 0)/filteredArray.length; let appo_obj = {index: el, average: avg}; averages.push(appo_obj); }) console.log(averages)

编辑:正如@MattJHoughton 所建议的,for 循环对性能更好。

 let runArray = ['Welcome', 'Hello']; let data = [{Node:'Good', Session:'2', Run:'Welcome', Run_Group:'Display', Elapsed_Ms: '1000'}, {Node:'Good', Session:'2', Run:'Welcome', Run_Group:'Display', Elapsed_Ms: '500'}, {Node:'Good', Session:'2', Run:'Hello', Run_Group:'Display', Elapsed_Ms: '1000'}]; let averages = []; for(let i=0; i<runArray.length;i++) { let filteredArray = data.filter(dat => dat.Run === runArray[i]); let avg = filteredArray.reduce((a, b) => a + parseInt(b.Elapsed_Ms), 0)/filteredArray.length; let appo_obj = {index: runArray[i], average: avg}; averages.push(appo_obj); } console.log(averages)

扩展您现有的代码,我们需要循环您的runArray的值以查找data数组中的任何匹配项目,保持总运行时间的运行总和和数据项计数。

 let runArray = ['Welcome', 'Hello']; let data = [{ Node:'Good', Session:'2', Run:'Welcome', Run_Group:'Display', Elapsed_Ms: '1000' }]; let sumElapsedMs = 0; let numberOfItems = 0; // loop over runArray runArray.forEach((value) => { // find the first matching entry in data array const matchedDataItem = data.find((dataItem) => { return dataItem.Run === value; }); // sum total elapsed & number of data entries if (matchedDataItem) { numberOfItems++; sumElapsedMs += matchedDataItem.Elapsed_Ms; } }); // calculate average (else default: undefined) const averageElapsedMs = numberOfItems? sumElapsedMs/numberOfItems: undefined; console.log('Average Elapsed (mS)', averageElapsedMs);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM