const repeat= (nums) =>{ //* Done
    let ans = []
    for(let i = 0; i< nums.length; i  ){
      if(nums[i] === nums[i 1]){
         if(ans[ans.length -1] !== nums[i]){
            ans.push(nums[i])
         }
      } 
    }
    return ans.length 
}
console.log(repeat(['nsmg33de1','nsmg33de1','2211,','2211','1234','1234']))在这个例子中,这个函式似乎无法正常作业,阵列中有 3 个重复的字符串,但它会输出 2
uj5u.com热心网友回复:
[我希望这会对您有所帮助,首先将给定的字符串转换为阵列。要做到这一点,请使用string.split(""). 其次,创建一个将单词存盘为键并计数为值的映射。
现在遍历 stringArray 并将当前单词存盘到地图中。并在每次找到单词时增加单词的计数。
检查以下链接][1]
let words = "I am not gonna live forever, but I wanna live while I am alive";
function countRepeatedWords(sentence) {
  let words = sentence.split(" ");
  let wordMap = {};
  for (let i = 0; i < words.length; i  ) {
    let currentWordCount = wordMap[words[i]];
    let count = currentWordCount ? currentWordCount : 0;
    wordMap[words[i]] = count   1;
  }
  return wordMap;
}
console.log(countRepeatedWords(words));uj5u.com热心网友回复:
取决于你想要什么价值?如果您想要已发生的重复数量,您可以将您的串列转换为一个 Set 以洗掉所有重复,然后计算该集合与原始串列之间的大小差异,如下所示:
function repeat(values) {
  return values.length - new Set(values).size;
}
否则,如果您想知道有多少项目至少有 1 个重复,那将是一个不同的故事。
为此,您可以将集合转换为阵列,然后在阵列中多次找到该值的每个值上映射 1,对所有其他值映射 0。之后,您可以通过将所有这些值加在一起来减少此阵列。像这样:
function repeat(values) {
  return [...new Set(values)].map(v => values.filter(o => o == v).length > 1 ? 1 : 0).reduce((a, b) => a   b);
}
uj5u.com热心网友回复:
我把它放在控制台中。不是世界上最好的算法,但我认为这就是你想要做的:
const getCountOfDuplicates = (items) => {
   const count = {};
   
   items.forEach(item => {   
     if(count[item] && count[item] > 0) {
        count[item]  ;
     } else {
        count[item] = 1;
     }
   });
    return Object.values(count).reduce((acc, value) => {
        if(value > 1) {
        acc  ;
      }
      
      return acc;
    }, 0);
};
console.log('results 1', getCountOfDuplicates(['1','2','3','4','1','2','3','5', '6', '6', '7'])); // Output: "results 1", 4
console.log('results 2', getCountOfDuplicates(['nsmg33de1','nsmg33de1','2211,','2211','1234','1234'])) // Output: "results 2", 2
uj5u.com热心网友回复:
你的代码没问题。这个阵列有问题 ['nsmg33de1','nsmg33de1','2211,','2211','1234','1234'] 使用 ['nsmg33de1','nsmg33de1','2211','2211',' 1234','1234']
也试试这个原始代码
const arr = ['nsmg33de1','nsmg33de1','2211','2211','1234','1234']
let obj = {};
arr.forEach(x => {
  obj[x] = (obj[x] || 0)   1;
});
console.log(obj);
let valArray =Object.values(obj);
let conunt = 0;
valArray.forEach( c => {
    if(c > 1){
        conunt = conunt   1;
    }
});
console.log(conunt);
uj5u.com热心网友回复:
你的代码运行得很好。
洗掉,串列中第 3 项末尾的逗号。
['nsmg33de1','nsmg33de1','2211,','2211','1234','1234']
结果:
['nsmg33de1','nsmg33de1','2211','2211','1234','1234']
const repeat = nums => { //* Done
    let ans = []
    for (let i = 0; i < nums.length; i  ) {
      if (nums[i] === nums[i 1]) {
         if (ans[ans.length-1] !== nums[i]) {
            ans.push(nums[i])
         }
      } 
    }
    return ans.length 
}
console.log(repeat(['nsmg33de1','nsmg33de1','2211','2211','1234','1234'])) // -> 3如果单词不按顺序使用以下内容:
const getRepeatedWordsCount = list => {
  let wordDict = {};
  let total = 0;
  
  for (let word of list) {
    total  = wordDict[word] ? 1 : 0;
    wordDict[word] = 1;
  }
  
  return total;
}
console.log(getRepeatedWordsCount(['nsmg33de1','2211','1234','nsmg33de1','1234', '2211'])) // -> 3
 
							 
										
										 
										
										 
										
										
										 
										
										 
										
										 
										
										
0 评论