gpt4 book ai didi

javascript - 分离独特和非独特项目的功能出现意外结果

转载 作者:行者123 更新时间:2023-12-03 08:21:45 25 4
gpt4 key购买 nike

以下函数的目的是仅输出作为参数传递的数组中的非唯一项:

"use strict";
function nonUnique(data){
var tab = [];
for(var d = 0; d < data.length; d++) {
if(typeof(data[d]) == "string"){
tab[d] = data[d].toUpperCase();
}
else{
tab[d] = data[d];
}
}

var count = 0;
var tab_non_unique = [];
var tab_unique = [];

for(var i = 0; i < tab.length; i++){

for(var j = 0; j < tab.length; j++){
if(tab[i] == tab[j]){
count ++;
}

if(count > 1){
tab_non_unique.push(tab[i]);
count = 0;
break;
}
if (count == 1) {
tab_unique.push(tab[i]);
}

}

}
return tab_non_unique;
}

我已经通过在不同的数组上调用它来测试该函数,但以某种方式在

nonUnique([1, 2, 3, 4, 5]);

它失败并返回:

=> [ 2, 4 ]

我不明白我的代码中是什么导致 2 和 4 将计数器提高到高于 1,从而最终出现在 tab_non_unique 数组中。任何帮助将不胜感激,谢谢。

最佳答案

问题是只有在发现非唯一的情况下才重置count。但当以新号码开始时,应始终重置它。

因此将 count=0 放在循环的顶部。

for (var i = 0; i < tab.length; i++) {
count = 0;

for (var j = 0; j < tab.length; j++) {
if (tab[i] == tab[j]) {
count++;
}

if (count > 1) {
tab_non_unique.push(tab[i]);
break;
}
if (count == 1) {
tab_unique.push(tab[i]);
}

}
}

关于javascript - 分离独特和非独特项目的功能出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com