繁体   English   中英

Javascript 搜索 arrays 列表的数组

[英]Javascript search array of lists of arrays

我有一个需要循环遍历的项目列表。 我需要搜索一个项目数组是否包含一个项目数组。 这是数组,第一个值是时间戳,第二个是计数:

const i = [
    [1614719782079, 1],
    [1614719782085, 1],
    [1614719782091, 2],
    [1614719782096, 2],
]

我有一个 forEach 循环,它从我的后端遍历所有这些数据,我需要检查时间戳是否存在于数组中(第一个值),如果存在,则添加到数组的第二个值(计数)。 这是来自后端的示例数据:

  const mockData = [
    {
      ...someData,
      details: {
        eventTimestamp: 1614719782079, 
        equipmentId: 5,
        otherUselessData...
      }
    },
    {
      ...someData,
      details: {
        eventTimestamp: 1614719782079, 
        equipmentId: 5,
        otherUselessData...
      }
    }
  ]

基本上,如果eventTimestamp中的 eventTimestamp 存在于i中,则增加该数组中的第二个值。 PS不要问这个数据lol的可怕结构。 这就是我必须使用的全部内容

以下代码应该可以解决问题:

mockData.forEach(mock => {
  const el = i.find(e => e[0] === mock.details.eventTimestamp);
  if(el) {
    el[1]++
  }
})

这是一个可能的解决方案:

  1. 创建i的元素的Map其中第一项是key ,第二项是value
  2. 迭代mockData ,并且在每次迭代中,如果eventTimestamp在此 map 中,则增加其value
  3. 最后,更新i到这个 map 的entries

 let i = [ [1614719782079, 1], [1614719782085, 1], [1614719782091, 2], [1614719782096, 2], ]; const mockData = [ { details: { eventTimestamp: 1614719782079, equipmentId: 5 } }, { details: { eventTimestamp: 1614719782079, equipmentId: 5 } } ]; const updateTimestampCounts = (arr=[]) => { const map = new Map(); i.forEach(([ timestamp, count ]) => map.set(timestamp, count)); arr.forEach(({ details={} }) => { const { eventTimestamp } = details; const count = map.get(eventTimestamp); if(count) map.set(eventTimestamp, count+1); }); i = [...map.entries()]; } updateTimestampCounts(mockData) console.log(i);

这是我编辑的解决方案,对不起,第一次没看懂

 const i = [ [1614719782079, 1], [1614719782085, 1], [1614719782091, 2], [1614719782096, 2], ] const mockData = [ { details: { eventTimestamp: 1614719782079, equipmentId: 5, } }, { details: { eventTimestamp: 1614719782079, equipmentId: 5, count: 1, } } ] mockData.forEach(mock => { const el = i.find(e => e[0] === mock.details.eventTimestamp); if(el) { el[1]++ } }) console.log(i)

暂无
暂无

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

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