Javascript 如何在数字数组+;计数器显示每个数字在内部重复的方式
我需要在数组中找到两次或两次以上的重复项。例如,如果我有字符串数组,这就可以了Javascript 如何在数字数组+;计数器显示每个数字在内部重复的方式,javascript,arrays,Javascript,Arrays,我需要在数组中找到两次或两次以上的重复项。例如,如果我有字符串数组,这就可以了 var arrStr = 'i do as as becasue i do as'; function CheckDuplicates(sentence) { let arr = sentence.split(" "); let counter = {}; let duplicates = []; for(let i = 0;i <
var arrStr = 'i do as as becasue i do as';
function CheckDuplicates(sentence)
{
let arr = sentence.split(" ");
let counter = {};
let duplicates = [];
for(let i = 0;i < arr.length;i++)
{
let item = arr[i];
counter[item] = counter[item] >= 1 ? counter[item] += 1 : 1;
if(item != "")
{
if(counter[item] == 2)
{
duplicates.push(item);
}
}
}
Object.keys(counter)
.filter(key => !duplicates.includes(key))
.forEach(k => delete counter[k]);
return {
duplicates: duplicates,
counter: counter
};
}
let r = CheckDuplicates(arrStr);
c.log(r.duplicates);
c.log(r.counter);
但是使用相同的代码,如果我尝试使用数字数组,我在c.log(r.counter)中得到{}代码>
我不知道在这种情况下,includes为什么不能处理数字
var arr = [9, 9, 9 ,111, 2, 3, 4, 4, 5, 7 , 7];
function CheckDuplicates(sentence)
{
let counter = {};
let duplicates = [];
for(let i = 0;i < arr.length;i++)
{
let item = arr[i];
counter[item] = counter[item] >= 1 ? counter[item] += 1 : 1;
if(item != "")
{
if(counter[item] == 2)
{
duplicates.push(item);
}
}
}
Object.keys(counter)
.filter(key => !duplicates.includes(key))
.forEach(k => delete counter[k]);
return {
duplicates: duplicates,
counter: counter
};
}
let r = CheckDuplicates(arr);
c.log(r.duplicates);
c.log(r.counter);
Object.keys
将键作为字符串返回,并且还包括检查类型是否相等
注释行是我唯一更改的内容,您的代码运行良好(我在推入重复的时转换为字符串,但您也可以在使用包含时修复它)
var-arr=[9,9,9,111,2,3,4,4,5,7];
功能检查重复项(句子)
{
让计数器={};
设重复项=[];
for(设i=0;i=1?计数器[项目]+=1:1;
如果(项目!=“”)
{
if(计数器[项目]==2)
{
duplicates.push(`${item}`);//转换为字符串
}
}
}
对象。键(计数器)
.filter(键=>!重复。包括(键))
.forEach(k=>删除计数器[k]);
返回{
复制品:复制品,
柜台:柜台
};
}
设r=检查重复项(arr);
console.log(r.duplicates);
控制台日志(r计数器)代码>我认为问题在于对象键以字符串的形式返回键,同时还包括检查类型(三重相等)
var arr = [9, 9, 9 ,111, 2, 3, 4, 4, 5, 7 , 7];
function CheckDuplicates(sentence)
{
let counter = {};
let duplicates = [];
for(let i = 0;i < arr.length;i++)
{
let item = arr[i];
counter[item] = counter[item] >= 1 ? counter[item] += 1 : 1;
if(item != "")
{
if(counter[item] == 2)
{
duplicates.push(item);
}
}
}
Object.keys(counter)
.filter(key => !duplicates.includes(key))
.forEach(k => delete counter[k]);
return {
duplicates: duplicates,
counter: counter
};
}
let r = CheckDuplicates(arr);
c.log(r.duplicates);
c.log(r.counter);
[9, 4, 7]
{}