我可以使用此函数从数组中删除所有重复项:
function make_unique(array) {
return array.reduce(function(p, c) {
if (p.indexOf(c) < 0) p.push(c);
return p;
}, []);
};
Run Code Online (Sandbox Code Playgroud)
但这给了我任何2个重复的较低索引元素.我需要一种方法来返回数组中重复的任何元素的"更高"索引副本.
所以在以下数组中:
array = ["bob", "chris", "susan", "steve", "melissa", "steve", "bob"]
Run Code Online (Sandbox Code Playgroud)
它会给我元素1(克里斯),2(苏珊),4(梅利莎),5(史蒂夫),6(鲍勃)
更简单的"制作独特"功能filter:
var uniques = array.filter(function(v,idx) {
return array.indexOf(v)===idx;
})
Run Code Online (Sandbox Code Playgroud)
需要从"尾巴"过滤?用途lastIndexOf:
var uniques = array.filter(function(v,idx) {
return array.lastIndexOf(v)===idx;
});
Run Code Online (Sandbox Code Playgroud)
但请记住,这没有任何意义:如果你删除重复项,最早和最新实例之间没有区别,所以它们的排序应该完全无关紧要.
如果订单确实很重要,那么有些东西你没有告诉我们在消除副本歧义方面很重要,你应该在你的代码中表明(或者放弃当然的要求)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |