如何使用JavaScript在数组中查找不重复的数字?

如何使用JavaScript在数组中查找不重复的数字?,javascript,arrays,Javascript,Arrays,亲爱的各位,我正在尝试使用javascript在数组中查找非重复值。我已经编写了一些代码,但工作不正常。你们能告诉我问题出在哪里吗。谢谢 var-arr=[-1,2,5,6,2,9,1,6,5,1,3]; var n=阵列长度; var结果=“”; 函数nonrep(){ 对于(变量i=0;iobj[e]==1).map(Number) console.log(uniq)根据OP请求仅过滤唯一元素: 这将根据请求使用for循环。它返回一个数组,其中只包含在原始数组中出现一次的元素 var-a

亲爱的各位,我正在尝试使用javascript在数组中查找非重复值。我已经编写了一些代码,但工作不正常。你们能告诉我问题出在哪里吗。谢谢

var-arr=[-1,2,5,6,2,9,1,6,5,1,3];
var n=阵列长度;
var结果=“”;
函数nonrep(){
对于(变量i=0;iconsole.log(nonrep())
您可以首先使用
reduce
获取每个数字元素的一个对象,然后使用
对象上的
过滤器
。键
返回非重复数字的数组

var arr=[-1,2,5,6,2,9,-1,6,5,-1,3];
var obj=arr.reduce((r,e)=>(r[e]=(r[e]| | 0)+1,r),{});
var uniq=Object.keys(obj).filter(e=>obj[e]==1).map(Number)
console.log(uniq)
根据OP请求仅过滤唯一元素: 这将根据请求使用for循环。它返回一个数组,其中只包含在原始数组中出现一次的元素

var-arr=[-1,2,5,6,2,9,1,6,5,1,3];
var n=阵列长度;
var结果=[];
函数nonrep(){
对于(变量i=0;i
您可以使用和:

console.log(
  [-1, 2, 5, 6, 2, 9, -1, 6, 5, -1, 3].filter((v, i, a) => a.indexOf(v, i + 1) === -1 )
);
一些变化:

  • 在函数内部移动所有变量声明
  • 对移交的数组使用函数参数,保持函数的纯净
  • 提前在函数顶部声明所有需要的变量
  • 将数组作为结果数组
    唯一
  • 检查
    i
    j
    ,如果相等
    则继续执行(内部)循环
  • 检查
    i
    j
    处的值,并退出(内部)循环,因为发现重复项
  • 在内部循环的末尾进行检查,并使用数组的长度检查索引
    j
    ,如果相等,则将值推到
    unique
  • 使用单个
    return
    语句,并在外循环末尾使用
    unique
    数组
函数getUnique(数组){ var l=数组长度, i、 j, 唯一=[]; 对于(i=0;i O/p

请尝试下面的代码片段。
var arr=[-1,2,5,6,2,9,-1,6,5,-1,3];
var-uniqArr=[];
对于(变量i=0;i
此ES6代码适用于我:


a、 map(c=>a.filter(b=>c==b)).filter(e=>e.length total.concat(cur),[])

此解决方案可能有一种更简洁的方法,但这可以通过过滤数组并将其当前值与数组项本身进行比较(预期当前项的索引值)来实现

const sampleArray=[1,2,3,7,2,1,3];
常量GetNonduplicatedValue=(arr)=>
arr.filter((项目,索引)=>{
阵列拼接(索引,1)
常量唯一=!arr.includes(项)
阵列拼接(索引,0,项目)
返回唯一
})

log(“非重复值:”,…getNonDuplicatedValues(sampleArray))
这里是一个使用循环的工作方法

var arr=[-1,2,5,6,2,9,-1,6,5,-1,3];
var len=阵列长度;
const result=arr
.filter(值=>{
var计数=0;

对于(var i=0;i编程中可能存在
arr.lenght
拼写问题的副本。请帮助我任何人您的预期输出是什么?您是否需要唯一值或值在数组中只出现一次?键入,使用
length
,您的代码将在for循环中工作,并且上面的代码不需要working@Anilkumar我编辑了我的answ呃,用于循环,实现你要求的过滤。尽管你总是揭示一些有趣的概念,但这次我必须指出O(2N^2)的复杂性是多余的。不过,这只是一个观察。
var arr1 = [45, 4,16,25,45,4,16, 9,7, 16, 25];
 var arr=arr1.sort();
  console.log(arr);
 var str=[];
 arr.filter(function(value){

if( arr.indexOf(value) === arr.lastIndexOf(value))
{ str.push(value);
console.log("ntttttttttttttnnn" +str)

}// how this works ===============A
 })
 7,9
Please try the below code snippet.

var arr = [-1, 2, 5, 6, 2, 9, -1, 6, 5, -1, 3];
    var uniqArr = [];
    for (var i = 0; i < arr.length; i++) {
      for (var j = 0; j < arr.length; j++) {
        if (arr[i] == arr[j] && i != j) break;
        else if (j == arr.length - 1){
          uniqArr.push(arr[i])
        } 
      }
    }

    console.log(uniqArr)