【问题标题】:Check if array contains different values [closed]检查数组是否包含不同的值
【发布时间】:2019-04-01 08:14:29
【问题描述】:

如何制作原生 javascript 函数来检测 Array 中的不同值?

例如:

const arr = [];
console.log(checkDiff(arr["A", "A", "A", "A")); // false
console.log(checkDiff(arr["A", "A", "A", "B")); // true
console.log(checkDiff(arr["B", "A", "C", "A")); // true
...

谢谢。

【问题讨论】:

    标签: javascript arrays string function


    【解决方案1】:

    您可以使用new Set() 存储唯一值。使用size 获取唯一元素的数量。如果大小为 1,则返回 false

    console.log(checkDiff(["A", "A", "A", "A"])); // false
    console.log(checkDiff(["A", "A", "A", "B"])); // true
    console.log(checkDiff(["B", "A", "C", "A"])); // true
    console.log(checkDiff([])); // true
    
    function checkDiff(a) {
      return new Set(a).size !== 1;
    }

    如果你想在数组为空的情况下返回false,你可以:

    console.log(checkDiff(["A", "A", "A", "A"])); // false
    console.log(checkDiff(["A", "A", "A", "B"])); // true
    console.log(checkDiff(["B", "A", "C", "A"])); // true
    console.log(checkDiff([])); // false
    
    function checkDiff(a) {
      return a.length !== 0 && new Set(a).size !== 1;
    }
    【解决方案2】:

    使用every:

    function checkDiff(arr) {
      return !arr.every(e => e == arr[0]);
    }
    
    console.log(checkDiff(["A", "A", "A", "A"]));
    console.log(checkDiff(["A", "A", "A", "B"]));
    console.log(checkDiff(["B", "A", "C", "A"]));

    或者,从 Set 创建一个新数组并查看 length 是否不是 1:

    function checkDiff(arr) {
      return [...new Set(arr)].length != 1;
    }
    
    console.log(checkDiff(["A", "A", "A", "A"]));
    console.log(checkDiff(["A", "A", "A", "B"]));
    console.log(checkDiff(["B", "A", "C", "A"]));

    【讨论】:

    【解决方案3】:

    您可以检查是否存在与第一个不同的元素。 Array.prototype.some

    checkDiff = (arr) => arr.some(ele => ele !== arr[0]);
    
    console.log(checkDiff(["A", "A", "A", "A"])); // false
    console.log(checkDiff(["A", "A", "A", "B"])); // true
    console.log(checkDiff(["B", "A", "C", "A"])); // true

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 2015-01-01
      • 2021-07-15
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      相关资源
      最近更新 更多