如果找到数组中指定数量的相同元素,则为true



假设我有一个数组

var array = ["A", "A", "A", "B", "B", "A", "C", "B", "C"];

我想做一个检查,如果有4个相同的元素";A";

如果我使用array.includes("A"(,那么它在所有元素中只查找一个这样的元素,并且在任何情况下都返回true,但当恰好有4个这样的元件时,我需要

或者说,在同一个数组中,我想找到3个元素";B";以及2个元件";C";,只有当它们和我想要的一样多时才返回true,如果更少,则返回false

我该怎么做?

照这样拍。

const myArr = ["A", "A", "A", "B", "B", "A", "C", "B", "C"];
const findExactly = (arr, val, q) => arr.filter(x => x == val).length == q; 
// logs "true" as expected :)
console.log(findExactly(myArr, 'A', 4));

因此函数findExactly接收一个数组、一个值和一个数字X作为量。如果数组包含值X次,则返回布尔值。所以上面的例子适用于你在问题"我想做一个检查,如果有4个相同的元素";A"&">

从stackflow上得到我的答案。

var array = ["A", "A", "A", "B", "B", "A", "C", "B", "C"];
const counts = {};
for (const el of arr) {
counts[el] = counts[el] ? counts[el] + 1 : 1;
}
console.log(counts["A"] > 4) // 4 or more "A"s have been found
console.log(counts["B"] === 3 && counts["C"] === 3) // exactly 3 "B"s and 2 "C"s have been found

最新更新