Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何优化检查重复和缺失值的代码?_Javascript - Fatal编程技术网

Javascript 如何优化检查重复和缺失值的代码?

Javascript 如何优化检查重复和缺失值的代码?,javascript,Javascript,此代码用于在排序后返回重复项,还用于返回给定数组限制之间的缺失值,执行正确,但我需要重新编码,以便在更短的时间内完成 然后执行有人能帮忙吗 函数findDupsMiss(arr){ //你的代码在这里 var newarr=[]; var缺失; 重复变量=[]; var newdup=[] arr.forEach((el,i)=>{ 如果(新包含(el)=假){ 新推力(el) } }) var sortedar=newarr.sort((a,b)=>a-b); 对于(变量i=0;i{ 如果(

此代码用于在排序后返回重复项,还用于返回给定数组限制之间的缺失值,执行正确,但我需要重新编码,以便在更短的时间内完成 然后执行有人能帮忙吗

函数findDupsMiss(arr){
//你的代码在这里
var newarr=[];
var缺失;
重复变量=[];
var newdup=[]
arr.forEach((el,i)=>{
如果(新包含(el)=假){
新推力(el)
}
})
var sortedar=newarr.sort((a,b)=>a-b);
对于(变量i=0;i{
如果(arr.indexOf(el)!=arr.lastIndexOf(el)){
重复。推送(el)
}
})
重复。forEach(el=>{
if(newdup.includes(el)=false){
新重复推送(el)
}
})
var lastdup=newdup.sort((a,b)=>a-b);
返回[未命中,上次重复]
}

findDupsMiss([10,9,8,9,6,1,2,4,3,2,5,5,3])
决策之一是减少循环

函数findDupsMiss(arr){
//你的代码在这里
var newarr=[];
var缺失;
重复变量=[];
var temp={}
arr.forEach((el,i)=>{
如果(!温度[el]){
温度[el]=真;
}否则{
重复。推送(el)
}
如果(新包含(el)==false){
新推力(el)
}
})
var sortedar=newarr.sort((a,b)=>a-b);
对于(变量i=0;ia-b);
返回[未命中,上次重复]

}
您可以对对象的值进行计数,并获取该对象的所有键,然后根据值进行筛选

对于缺少的键,请查找没有上一个键的值

函数findDupsMiss(arr){
让count={},
重复项=[],
丢失的
for(arr的let值)
如果(计数中的值)计数[值]+;
else计数[值]=-1;
for(让输入计数){
如果(!count[key])重复,则按(+键);
如果(!(计数中的键-1))缺失=键-1;
}
返回[缺失,重复];
}
log(findDupsMiss([10,9,8,9,6,1,2,4,3,2,5,5,3])或者您可以使用reduce

函数findDupsMiss(arr){
//你的代码在这里
var缺失;
重复变量=[];
var temp={}
var-sortedar=arr.sort((a,b)=>a-b);
分拣机减少((上、当前)=>{
如果(!温度[cur]){
温度[电流]=真;
}否则{
重复。推送(cur)
}
如果((当前上一个)>1){
未接=上一次+1
}
返回电流;
},分拣机[0])
var lastdup=duplicates.sort((a,b)=>a-b);
返回[未命中,上次重复]

}
试着在
遗漏的地方要求性能优化
?如果您想运行
,请尝试使用
。包含
多次。我投票结束这个问题,因为代码可以工作,但只需要优化:因此它更适合CodeReview。它不起作用!什么不起作用?代码本身就起作用,但执行起来要花很多时间!请试试上面的。它很有效。谢谢!没用!你确定吗?检查我在codewars网站上解决了它,它说我需要优化我的代码!这个怎么样?我试过了,很好,但我的问题只发生在代码战中!