首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查数组是否有一个元素Javascript Dice之外的重复

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

Stack Overflow用户
提问于 2020-11-23 21:22:32
回答 4查看 89关注 0票数 0

嗨,我在努力实现一个函数,只需检查一个数组是否除了一个数字之外都有相同的数字。我现在已经尝试了几种方法,我觉得我什么也做不到。这是因为一个骰子游戏,用户可以选择一些骰子,然后滚动和得分的重复数字和其他序列加分,等等。

我认为检查数组中除了数组中的一个元素之外是否有所有的重复,这很简单,但我无法让它工作。我在想一些东西,比如检查aray中的元素,看看除了一个元素,所有元素是否都是相同的值,方法是使用array.ength-1。示例中的骰子值将是正确的:

代码语言:javascript
复制
[1,2,2,2] or [4,4,2,4] (for 4 dice) //true
[1,1,6] (for 3 dice )//true

我试过这样的方法:

代码语言:javascript
复制
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和堆栈溢出来说已经足够抱歉了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-11-23 21:46:18

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

代码语言:javascript
复制
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]));

票数 0
EN

Stack Overflow用户

发布于 2020-11-23 21:33:00

如果您只是想检查除了数组中的值之外,所有值是否相同,则只需使用以下内容即可。

代码语言:javascript
复制
function oneMultiple(array) {
  const set = new Set(array)

  return set.size === 2
}
票数 0
EN

Stack Overflow用户

发布于 2020-11-23 21:34:12

它使用Set并比较原始数组的长度和已删除的重复项数组的长度:

代码语言:javascript
复制
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]));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64976650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档