have continuous indexes
have continuous indexes
by ozzymcduff
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://code.jquery.com/qunit/qunit-1.19.0.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.19.0.css">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
JavaScript
function isRangeSubset(collection, subset) {
var indexes = subset.map(function (item) {
return collection.indexOf(item);
}).sort();
var first = _.first(indexes);
var last = _.last(indexes);
var expectedLength = 1 + last - first;
return expectedLength === indexes.length;
}
test("range subset", function (assert) {
var range = _.range(0, 11);
assert.strictEqual(isRangeSubset(range, [1, 2, 3]), true);
assert.strictEqual(isRangeSubset(range, [1, 2, 3, 0]), true);
assert.strictEqual(isRangeSubset(range, [2, 3, 1]), true);
assert.strictEqual(isRangeSubset(range, [1, 2, 3, 4, 5, 6, 7, 8]), true);
assert.strictEqual(isRangeSubset(range, [6, 7, 2, 3, 4, 8, 1, 5]), true);
});
test("not range subset", function (assert) {
var range = _.range(0, 11);
assert.strictEqual(isRangeSubset(range, [0, 2, 3]), false);
assert.strictEqual(isRangeSubset(range, [1, 2, 4, 5, 6, 7, 8]), false);
assert.strictEqual(isRangeSubset(range, [6, 7, 3, 4, 8, 1, 5]), false);
});