gpt4 book ai didi

javascript - 在moment js中从数组中删除重复项

转载 作者:行者123 更新时间:2023-11-30 11:11:05 26 4
gpt4 key购买 nike

我有

let  array = [moment('2019-01-17'),moment('2019-01-19'),moment('2019-01-19'),moment('2019-01-21')];

我需要删除重复项

所以我写了过滤器,但它不能正常工作

array= array.filter((v,i) => !moment(array.indexOf(v)).isSame(moment(i)))

直播工作plunker index.html 中的代码

最佳答案

你走在正确的轨道上,但细节有点偏离。请试试这个:

const comparisonValues = array.map(v => v.valueOf());
array = array.filter((v,i) => comparisonValues.indexOf(v.valueOf()) == i);

解释:

  • array.filter((value, index, self) => self.indexOf(value) == index) 是一种用于在数组中查找唯一值的有用模式
  • 该模式背后的直觉是“只选取数组中某个值的第一个 个实例”
  • 它仅适用于可以直接比较的值 - indexOf 在内部使用严格的相等性检查 (===)
  • momentValue.valueOf() 将为该比较返回一个有用的值,即自 Unix 纪元以来的毫秒数
  • 我们的解决方案使用一个辅助数组,该数组由 valueOffilter 中的毫秒值组成,使用 valueOf() 进行比较迭代中的当前值

另一种方式,如果你想使用isSame,可能是这样的:

array = array.filter((v, i) => {
return array.findIndex(candidate => v.isSame(candidate)) == i
});

关于javascript - 在moment js中从数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53646145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com