如何使用JavaScript在数组中查找不重复的数字?
亲爱的各位,我正在尝试使用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
var-arr=[-1,2,5,6,2,9,1,6,5,1,3];
var n=阵列长度;
var结果=“”;
函数nonrep(){
对于(变量i=0;i console.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)