Javascript 从即时js中的数组中删除重复项
我有 我需要删除重复项 所以我写了过滤器,但它不能正常工作Javascript 从即时js中的数组中删除重复项,javascript,momentjs,Javascript,Momentjs,我有 我需要删除重复项 所以我写了过滤器,但它不能正常工作 let array = [moment('2019-01-17'),moment('2019-01-19'),moment('2019-01-19'),moment('2019-01-21')]; 在index.html中使用实时代码时,您的思路是正确的,但细节有点偏离。请试试这个: array= array.filter((v,i) => !moment(array.indexOf(v)).isSame(moment(i))
let array = [moment('2019-01-17'),moment('2019-01-19'),moment('2019-01-19'),moment('2019-01-21')];
在index.html中使用实时代码时,您的思路是正确的,但细节有点偏离。请试试这个:
array= array.filter((v,i) => !moment(array.indexOf(v)).isSame(moment(i)))
说明:
array.filtervalue,index,self=>self.indexOfvalue==index是查找数组中唯一值的有用模式
模式背后的直觉是只拾取数组中值的第一个实例
它只适用于可以直接比较的值-indexOf在内部使用严格的相等性检查===
momentValue.valueOf将返回一个有用的比较值,即自Unix纪元以来的毫秒数
我们的解决方案使用一个助手数组,该数组由valueOf和in filter中的毫秒值组成,在迭代中使用当前值的valueOf进行比较
另一种方法,如果您想使用isSame,可以如下所示:
const comparisonValues = array.map(v => v.valueOf());
array = array.filter((v,i) => comparisonValues.indexOf(v.valueOf()) == i);
你的思路是对的,但细节有点不清楚。请试试这个:
array= array.filter((v,i) => !moment(array.indexOf(v)).isSame(moment(i)))
说明:
array.filtervalue,index,self=>self.indexOfvalue==index是查找数组中唯一值的有用模式
模式背后的直觉是只拾取数组中值的第一个实例
它只适用于可以直接比较的值-indexOf在内部使用严格的相等性检查===
momentValue.valueOf将返回一个有用的比较值,即自Unix纪元以来的毫秒数
我们的解决方案使用一个助手数组,该数组由valueOf和in filter中的毫秒值组成,在迭代中使用当前值的valueOf进行比较
另一种方法,如果您想使用isSame,可以如下所示:
const comparisonValues = array.map(v => v.valueOf());
array = array.filter((v,i) => comparisonValues.indexOf(v.valueOf()) == i);
您只需一次就可以实现相同的结果,而且速度更快。一旦您将项目分组,只需通过。这将比每次搜索整个数组的每个项目都要快。对于小型阵列来说,这并不重要,但对于大型阵列来说,这将非常明显 以下是简明版本: 假设数据=[时刻'2019-01-17',时刻'2019-01-19',时刻'2019-01-19',时刻'2019-01-19',时刻'2019-01-19',时刻'2019-01-21']; const result=data.reducea,c=>a[c.format]=c,a,{} console.logObject.valuesresult
您只需一次就可以实现相同的结果,而且速度更快。一旦您将项目分组,只需通过。这将比每次搜索整个数组的每个项目都要快。对于小型阵列来说,这并不重要,但对于大型阵列来说,这将非常明显 以下是简明版本: 假设数据=[时刻'2019-01-17',时刻'2019-01-19',时刻'2019-01-19',时刻'2019-01-19',时刻'2019-01-19',时刻'2019-01-21']; const result=data.reducea,c=>a[c.format]=c,a,{} console.logObject.valuesresult
你能在回答中使用IsSamemometer函数吗?你能在回答中使用IsSamemometer函数吗?为什么你的代码显示输出错误?比如[2019-01-16T18:30:00.000Z,2019-01-18T18:30:00.000Z,2019-01-20T18:30:00.000Z]它怎么了?这只是力矩对象的字符串表示。为什么代码显示输出错误?比如[2019-01-16T18:30:00.000Z,2019-01-18T18:30:00.000Z,2019-01-20T18:30:00.000Z]它怎么了?它只是力矩对象的字符串表示。