giv*_*Job 2 javascript momentjs
我有
let array = [moment('2019-01-17'),moment('2019-01-19'),moment('2019-01-19'),moment('2019-01-21')];
Run Code Online (Sandbox Code Playgroud)
我需要删除重复项
所以我写了过滤器,但它无法正常工作
array= array.filter((v,i) => !moment(array.indexOf(v)).isSame(moment(i)))
Run Code Online (Sandbox Code Playgroud)
在index.html 中运行实时plunker代码
你的方向是正确的,但细节有点偏差。请尝试这个:
const comparisonValues = array.map(v => v.valueOf());
array = array.filter((v,i) => comparisonValues.indexOf(v.valueOf()) == i);
Run Code Online (Sandbox Code Playgroud)
解释:
array.filter((value, index, self) => self.indexOf(value) == index)是在数组中查找唯一值的有用模式===)momentValue.valueOf()将为该比较返回一个有用的值,即自 Unix Epoch 以来的毫秒数valueOf和 in 的毫秒值,使用迭代中的当前值filter进行比较valueOf()另一种方式,如果你想使用isSame,可能是这样的:
array = array.filter((v, i) => {
return array.findIndex(candidate => v.isSame(candidate)) == i
});
Run Code Online (Sandbox Code Playgroud)