Javascript 如何比较node.js中的两个数组

Javascript 如何比较node.js中的两个数组,javascript,node.js,arrays,Javascript,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]进行比较。运行property,这样我就

我有两个数组

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]进行比较。运行
property,这样我就可以计算
已用时间的平均值


有什么选择吗?

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

let runArray=['Welcome','Hello'];
让数据=[{节点:'Good',会话:'2',运行:'Welcome',运行组:'Display',运行时间:'1000'},
{节点:'Good',会话:'2',运行:'Welcome',运行组:'Display',运行时间:'500'},
{节点:'Good',会话:'2',运行:'Hello',运行组:'Display',运行时间:'1000'}];
让平均数=[];
runArray.map(el=>{
让filteredArray=data.filter(dat=>dat.Run==el);
设avg=filteredArray.reduce((a,b)=>a+parseInt(b.appeased_Ms),0)/filteredArray.length;
设appo_obj={index:el,average:avg};
平均推力(接近obj);
})
console.log(平均值)

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

let runArray=['Welcome','Hello'];
让数据=[{
节点:'Good',
会议:"2",,
跑步:“欢迎”,
运行组:'Display',
运行时间:1000
}];
设sumElapsedMs=0;
设numberOfItems=0;
//循环运行数组
runArray.forEach((值)=>{
//在数据数组中查找第一个匹配项
const matchedDataItem=data.find((dataItem)=>{
返回dataItem.Run==值;
});
//总运行时间和数据项数
如果(匹配的数据项){
numberOfItems++;
sumElapsedMs+=匹配的数据项。已用\u Ms;
}
});
//计算平均值(其他默认值:未定义)
const averageLapsedms=项目数?sumElapsedMs/numberOfItems:未定义;

log('平均运行时间(mS)'、平均延迟时间(mS))这是否回答了您的问题?我注意到,你是StackOverflow的新会员!欢迎登机。请在提问之前阅读,并在发布问题之前尝试搜索解决方案。您还可以看看它的
Array.difference
方法。不,我尝试应用该逻辑,但没有成功,因为它可以保证runArray中的所有元素都在数据数组中。但它们被重复了不止一次。这就是为什么我只想计算平均运行时间,你尝试过什么逻辑?我看不到任何代码示例(甚至不工作)。我还告诉过你,你可以把数组和你的对象值数组进行比较,StackOverflow也有很多这样的问题,你不需要复制它们,只要尝试搜索就可以了。是的,我看了loadash和它的array.difference方法。但我不能使用它,因为我知道runArray中的所有元素都将是数据的Run属性。将所有这些封装在map函数中似乎对性能来说是个坏主意,因为您不打算从runArray计算新数组,而是在函数中构建平均数数组。因此,您没有使用map创建的数组。为什么不使用for循环呢?