【问题标题】:Removing array duplicates based on second array item value根据第二个数组项值删除数组重复项
【发布时间】:2021-07-22 00:54:03
【问题描述】:

我正在尝试通过比较每个第二个值(日期嵌套项目,例如:From 22/07/21 10:00 to 22/07/21 12:00)来删除重复数组的项目(嵌套数组的项目)。

我正在为此苦苦挣扎,因为第三个嵌套项的值是一个随机字符串。任何帮助表示赞赏。

初始数组:

[
  ['F-GMXB', 'From 22/07/21 10:00 to 22/07/21 12:00', 'M8202042500022072100000007'],
  ['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M8802052500023072100000004'],
  ['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M28681025000260C2100148836'],
  ['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M2868102500026072100128886'],
]

预期结果,新数组:

[
  ['F-GMXB', 'From 22/07/21 10:00 to 22/07/21 12:00', 'M8202042500022072100000007'],
  ['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M8802052500023072100000004'],
]

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    您可以将以前的日期存储在一个数组中(a)并使用Array#filter 来检查它是否包含它:

    如果没有,则将日期添加到数组中

    const arr = [['F-GMXB', 'From 22/07/21 10:00 to 22/07/21 12:00', 'M8202042500022072100000007'],['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M8802052500023072100000004'],['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M28681025000260C2100148836'],['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M2868102500026072100128886']];
    
    var a = [], res = arr.filter(e => !a.includes(e[1]) ? a.push(e[1]) : false);
    
    console.log(res);

    【讨论】:

    • 哦,我明白了。我最初的想法是获取每个重复日期的位置并据此删除每个键。但是你的方法真的很巧妙!非常感谢您的帮助!
    【解决方案2】:

    你也可以这样做

    const arr1 =
    [ ['F-GMXB', 'From 22/07/21 10:00 to 22/07/21 12:00', 'M8202042500022072100000007']
    , ['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M8802052500023072100000004']
    , ['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M28681025000260C2100148836']
    , ['F-HMRT', 'From 26/07/21 07:00 to 27/07/21 22:00', 'M2868102500026072100128886']
    ]
    const arr2 =  arr1.filter(( c,i,{[i-1]:p})=>( !i || c[1]!=p[1])  )
     
    
    console.log(arr2)
    .as-console-wrapper {max-height: 100%!important;top:0 }

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 2017-08-08
      • 1970-01-01
      相关资源
      最近更新 更多