我有一个问题。你如何检索数组中没有double值的元素?例如:[1,1,2,2,3,4,4,5]然后你只检索[3,5]。 提前致谢
for (var j = 0; j < newArr.length; j++) {
if ((arr1.indexOf(newArr[j]) === 0) && (arr2.indexOf(newArr[j]) === 0)) {
index = newArr.indexOf(j); newArr.splice(index, 1);
}
}
答案 0 :(得分:6)
如果数组中的项是唯一的,则从开头找到的索引应该等于从末尾找到的索引,换句话说:
example.herokuapp.com/log_in
答案 1 :(得分:0)
创建新数组tmp
,并按indexOf
检查已存在的值。如果splice
函数已存在删除..
var arr = [1,1,2,2,3,4,4,5];
var tmp = [];
var dup = [];
for(var i = 0; i < arr.length; i++){
var ind = tmp.indexOf(arr[i]);
if(ind == -1){
if(dup.indexOf(arr[i]) == -1){
tmp.push(arr[i]);
}
}
else{
tmp.splice(ind,1);
dup.push(arr[i]);
}
}
console.log(tmp);
答案 2 :(得分:0)
针对未分类数组的解决方案,其中包含项目的哈希表。复杂度 O(2n)
var array = [1, 1, 2, 2, 3, 4, 4, 5, 1],
hash = Object.create(null),
single;
array.forEach(function (a, i) {
hash[a] = a in hash ? -1 : i;
});
single = array.filter(function (a, i) {
return hash[a] === i;
});
console.log(single);
答案 3 :(得分:0)
var tab = [1,1,2,2,3,4,4,5] //The array to analyze
tab = tab.sort(); // we sort the array
show(tab); // we display the array to the console (F12 to open it)
var uniqueElementTab = []; // this array will contain all single occurence
var sameElementCounter = 0;
for(x=0;x<tab.length;x++){ // for all element in the array
sameElementCounter = 0;
for(y=0;y<tab.length;y++){ // we compare it to the others
if((tab[x]==tab[y])){
sameElementCounter+=1; // +1 each time we meet the element elsewhere
}
}
if(sameElementCounter<=1){
uniqueElementTab.push(tab[x]); //if the element is unique we add it to a new array
}
}
show(uniqueElementTab); // display result
function show(tab) { // Simple function to display the content of an array
var st="";
for(i=0;i<tab.length;i++){
st += tab[i]+" ";
}
console.log(st+"\n");
}
希望它有所帮助。
答案 4 :(得分:0)
以下是使用Array.sort
,Array.join
,Array.map
,String.replace
和String.split
函数的简单“棘手”解决方案:
var arr = [1, 1, 2, 2, 3, 4, 4, 5];
arr.sort();
var unique = arr.join("").replace(/(\d)\1+/g, "").split("").map(Number);
console.log(unique); // [3, 5]
答案 5 :(得分:0)
这将是我完成这项工作的方式。
var arr = [1,1,2,2,3,4,4,5],
uniques = Object.keys(arr.reduce((p,c) => (c in p ? Object.defineProperty(p, c, {enumerable : false,
writable : true,
configurable : true})
: p[c] = c,
p), {}));
console.log(uniques);
答案 6 :(得分:0)
如果数组已排序,您可以在O(n)中解决此问题(请参阅下面的“pushUniqueSinglePass”):
Array
这比使用地图或排序(计时!)更有效率。在我的机器中,一个1M排序的数组可以在18毫秒内找到它的独特元素;而使用集合的版本需要多10倍。