You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
871 B
30 lines
871 B
"use strict";
|
|
|
|
var forEach = require("@sinonjs/commons").prototypes.set.forEach;
|
|
|
|
/**
|
|
* Returns `true` when `s1` is a subset of `s2`, `false` otherwise
|
|
*
|
|
* @private
|
|
* @param {Array|Set} s1 The target value
|
|
* @param {Array|Set} s2 The containing value
|
|
* @param {Function} compare A comparison function, should return `true` when
|
|
* values are considered equal
|
|
* @returns {boolean} Returns `true` when `s1` is a subset of `s2`, `false`` otherwise
|
|
*/
|
|
function isSubset(s1, s2, compare) {
|
|
var allContained = true;
|
|
forEach(s1, function (v1) {
|
|
var includes = false;
|
|
forEach(s2, function (v2) {
|
|
if (compare(v2, v1)) {
|
|
includes = true;
|
|
}
|
|
});
|
|
allContained = allContained && includes;
|
|
});
|
|
|
|
return allContained;
|
|
}
|
|
|
|
module.exports = isSubset;
|
|
|