是否有一种技术或简单的方法可以返回所有重复值,如果可能的话还有返回它们的索引。还有独特的,及其指数。我怎样才能做到这一点? (可能使用也可能不使用对象)
实施例
var setOfValues = [1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 10, 10, 9, 10, 8 , 4, 11];
unique = {
values: [1, 5, 9, 8, 4, 11],
indices: [0, 9, 12, 14, 15, 16]
};
duplicates = {
values: [2, 2, 2, 3, 3, 4, 4, 4, 10, 10, 10],
indices: [1, 2, 3, 4, 5, 6, 7, 8, 10, 11]
};
答案 0 :(得分:0)
我宁愿把它作为算法问题而不是javascript问题
您可以先尝试对数组进行排序,然后很容易想出一个O(n)算法来查找每个数据的所有重复项和副本数。
然后,您可以使用找到的重复项搜索原始数组,以确定重复项的原始索引。
答案 1 :(得分:0)
我相信这就是你所要求的,虽然输出与你的例子预期不同,所以也许不是,但我无法与你的尝试进行比较,你能澄清一下吗?
的Javascript
function getUniqueAndduplicatesWithIndicies(array) {
return array.reduce(function (acc, curr, index, arr) {
if (acc.duplicates.values.indexOf(curr) !== -1 || arr.lastIndexOf(curr) !== index) {
acc.duplicates.values.push(curr);
acc.duplicates.indicies.push(index);
} else {
acc.unique.values.push(curr);
acc.unique.indicies.push(index);
}
return acc;
}, {
unique: {
values: [],
indicies: []
},
duplicates: {
values: [],
indicies: []
}
});
}
var setOfValues = [1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 10, 10, 9, 10, 8, 4, 11];
console.log(JSON.stringify(getUniqueAndduplicatesWithIndicies(setOfValues)));
输出
{
"unique":{
"values":[1,5,9,8,11],
"indicies":[0,9,12,14,16]
},
"duplicates":{
"values":[2,2,2,3,3,4,4,4,10,10,10,4],
"indicies":[1,2,3,4,5,6,7,8,10,11,13,15]
}
}
上