在JavaScript中,Array.some()
内置对象是否具有Array.every()
和Set
的等效项?
答案 0 :(得分:3)
否,Set.prototype
are上唯一的内置方法:
Set.prototype.add()
Set.prototype.clear()
Set.prototype.delete()
Set.prototype.entries()
Set.prototype.forEach()
Set.prototype.has()
Set.prototype.values()
Set.prototype[@@iterator]()
将集合转换为数组,然后使用数组方法可能是最简单的。
const set1 = new Set([1, 2]);
const set2 = new Set([-1, 2]);
const allPositive = set => [...set].every(num => num > 0);
console.log(
allPositive(set1),
allPositive(set2)
);
答案 1 :(得分:3)
Set
原型上本身不提供此功能,但是如果您发现自己经常需要此功能,则可以轻松地扩展Set以添加它。
class extendedSet extends Set{
every(f){
return Array.prototype.every.call([...this], f)
}
some(f){
return Array.prototype.some.call([...this], f)
}
}
let a_set = new extendedSet([1, 2, 3, 4]);
console.log(a_set.every(n => n < 2))
console.log(a_set.some(n => n < 2))
// still works as a Set
console.log(a_set.has(4))
答案 2 :(得分:1)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#Methods是Set
方法:
Set.prototype .add()
Set.prototype .clear()
Set.prototype .delete()
Set.prototype .entries()
Set.prototype.forEach()
Set.prototype .has()
Set.prototype..values()
Set.prototype @@ iterator
在您的情况下,您可以执行以下操作:
Array.from(set).some() or Array.from(set).every()
的更多信息