为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

四季花海 2023-06-15 17:10:01
我正在努力实现一个函数来简单地检查数组是否具有除了一个之外的所有相同数字。我现在已经尝试了几种方法,但我觉得我无处可去。这样做的原因是对于骰子游戏,用户可以选择多个骰子,然后掷骰子并为重复的数字和其他序列等获得奖励积分。我认为检查数组是否除了数组中的一个元素之外的所有重复元素会很简单,但我无法让它工作。我在想一些事情,比如检查数组中的元素,并通过使用 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 的新手。
查看完整描述

4 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

实现这一点的一种方法是构建数组中每个值的计数数组。然后可以检查此列表以确保其长度为 2,最小计数为 1:


const countDuplicate = (array) => {

  let counts = Object.values(array.reduce((c, v) =>

    (c[v] = (c[v] || 0) + 1, c), {}));

  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]));


查看完整回答
反对 回复 2023-06-15
?
BIG阳

TA贡献1859条经验 获得超6个赞

这是使用Set它比较原始数组和删除重复数组的长度:


const hasDuplicates = (arr = []) => {

  const noDuplicates = [...new Set(arr)];


  return arr.length !== noDuplicates.length;

};


console.log(hasDuplicates([1,2,3]));

console.log(hasDuplicates([1,2,3,1]));


查看完整回答
反对 回复 2023-06-15
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

如果您只是想检查除了数组中的一个值之外所有值是否都相同,您可以使用它。


function oneMultiple(array) {

  const set = new Set(array)


  return set.size === 2

}


查看完整回答
反对 回复 2023-06-15
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

如果你想简单地使用一个值使用这个


function oneMultiple(array) {

  const set = new Set(array)


  return set.size === 2

}


查看完整回答
反对 回复 2023-06-15
  • 4 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信