Javascript 如何在数组中打印唯一的数字

Javascript 如何在数组中打印唯一的数字,javascript,arrays,Javascript,Arrays,问题是在数组中查找唯一的数字,如[2,2,2,5]。 输出应该是5,因为它是数组中唯一的1个元素 我尝试过这样做: function findUniq(arr) { var b= arr[0]; var c; for(var i=0; i<arr.length; i++) { if(arr[i]===b ) { b=arr[i] } else { c=

问题是在数组中查找唯一的数字,如
[2,2,2,5]
。 输出应该是5,因为它是数组中唯一的1个元素

我尝试过这样做:

function findUniq(arr) {

    var b= arr[0];
    var c;
    for(var i=0; i<arr.length; i++)
    { 

      if(arr[i]===b )
      {
         b=arr[i]

         }
     else

       {
       c=arr[i];
  }
}
return c
console.log(findUniq([3, 5, 3, 3, 3]))
函数findUniq(arr){
var b=arr[0];
var c;
对于(var i=0;i,您可以使用和来查看某个值在数组中是否出现多次(如果出现,则它们将不同),如果出现,则该值不是唯一值。用于处理数组:

let数组=[2,2,2,5];
log(array.filter(v=>array.indexOf(v)==array.lastIndexOf(v));
数组=[5,3,3,3];
log(array.filter(v=>array.indexOf(v)==array.lastIndexOf(v));
数组=[4,4,5,4];

console.log(array.filter(v=>array.indexOf(v)==array.lastIndexOf(v));
您可以创建一个递归函数,该函数将获取数组的第一个元素,并查看它是否存在于数组的其余部分,如果存在,它将获取下一个元素并执行相同的操作,如果它不存在于数组的其余部分,则返回该元素:

const arr=[3,3,3,5,3];
const find=arr=>{
常数[f,…剩余]=arr;
如果(其余部分包括(f))
返回查找(rest);
其他的
返回f;
}
常量结果=查找(arr);

console.log(result);
使用只存储唯一元素的集合尝试类似的操作:

var set = new Set(arr);
// count instances of each element in set
result = {};
for(var i = 0; i < a.length; ++i) {
    if(!result[arr[i]])
        result[arr[i]] = 0;
    ++result[arr[i]];
}
for (var value in result) {
    if (value == 1) {
        return value;
    }
}
// if there isn't any
return false;

var集=新集(arr);
//计算集合中每个元素的实例数
结果={};
对于(变量i=0;i

这应该行得通,如果不行请告诉我。

这是另一种实现,其效率肯定低于的,但无论如何,它是一种有效的算法:

函数findUniq(arr){
var elemCount=新映射();
var uniq=[];
//初始化元素conts
for(arr.values()的变量k){
电子计数集(k,0);
}
//计数元素
for(arr.values()的变量k){
elemCount.set(k,elemCount.get(k)+1);
}
//将uniq元素添加到数组中
for(elemCount.entries()的变量[k,v]{
如果(v==1)单向推力(k);
}
返回uniq;
}

console.log(findUniq([3,5,3,3,3]))
如果您喜欢
.reduce
而不是
.map
,以满足您的用例(出于性能等原因):

函数存在(数据){
返回data.reduce((a,c)=>(data.indexOf(c)==data.lastIndexOf(c))?a.concat(c):a,[]);
}
日志(存在([1,1,1,2]);

console.log(existance([1,1,2,3,4,5,5,6,6,6]);
检查第一个是否等于第二个。如果不等于第二个,则您知道其中一个是不同的,您可以将其中一个与另一个元素进行比较。这将解决缺少的情况。如果有更多唯一的数字,该怎么办?例如
[2,1,2,5]
?将返回
[1,5]
或仅返回
1
,找到的第一个唯一值?是否可能有多个重复的不同值(例如:
[1,1,1,2,2,3]
)?