【发布时间】:2015-11-15 12:59:03
【问题描述】:
波纹管函数的目的是仅输出作为参数传递的数组中的非唯一项:
"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 数组中。任何帮助将不胜感激,谢谢。
【问题讨论】:
标签: javascript arrays function for-loop