检查数组是否包含不同的值

时间:2019-04-01 08:14:29

标签: javascript arrays string function

如何制作本机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
...

谢谢。

3 个答案:

答案 0 :(得分:5)

您可以使用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;
}

答案 1 :(得分:1)

使用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"]));

答案 2 :(得分:0)

您可以检查是否存在与第一个元素不同的元素。 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