猿问

检查数组是否有除一个元素之外的重复元素Javascript Dice

我正在努力实现一个函数来简单地检查数组是否具有除了一个之外的所有相同数字。我现在已经尝试了几种方法,但我觉得我无处可去。这样做的原因是对于骰子游戏,用户可以选择多个骰子,然后掷骰子并为重复的数字和其他序列等获得奖励积分。


我认为检查数组是否除了数组中的一个元素之外的所有重复元素会很简单,但我无法让它工作。我在想一些事情,比如检查数组中的元素,并通过使用 array.length-1 来查看所有元素是否除了一个之外都是相同的值。示例 dice 值为 true 的值:


[1,2,2,2] or [4,4,2,4] (for 4 dice) //true

[1,1,6] (for 3 dice )//true

我试过这样的事情:


function countDuplicate(array){

  var count=0;

  var sorted_array=array.sort();

  for (let i=1;i<sorted_array.length;i++)

  {

    if (sorted_array[i] ==sorted_array[i+1]){

        count+=count;}

  }

  if (count===sorted_array.length-1){

    return true;

  }

  return false;

}

但它似乎不起作用。希望这足够抱歉我是 javascript 和 stackoverflow 的新手。


四季花海
浏览 111回答 4
4回答

qq_笑_17

实现这一点的一种方法是构建数组中每个值的计数数组。然后可以检查此列表以确保其长度为 2,最小计数为 1:const countDuplicate = (array) => {&nbsp; let counts = Object.values(array.reduce((c, v) =>&nbsp; &nbsp; (c[v] = (c[v] || 0) + 1, c), {}));&nbsp; return counts.length == 2 && Math.min(...counts) == 1}console.log(countDuplicate([1,2,2,2]));console.log(countDuplicate([4,4,2,4]));console.log(countDuplicate([1,1,6]));console.log(countDuplicate([2,2,4,4]));console.log(countDuplicate([1,2]));

BIG阳

这是使用Set它比较原始数组和删除重复数组的长度:const hasDuplicates = (arr = []) => {&nbsp; const noDuplicates = [...new Set(arr)];&nbsp; return arr.length !== noDuplicates.length;};console.log(hasDuplicates([1,2,3]));console.log(hasDuplicates([1,2,3,1]));

梦里花落0921

如果您只是想检查除了数组中的一个值之外所有值是否都相同,您可以使用它。function oneMultiple(array) {&nbsp; const set = new Set(array)&nbsp; return set.size === 2}

江户川乱折腾

如果你想简单地使用一个值使用这个function oneMultiple(array) {&nbsp; const set = new Set(array)&nbsp; return set.size === 2}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答