Add strict flag to sortObjectsByIds
When true, any object not in the ids will be discarded and a subset will be returned.
This commit is contained in:
parent
2c40319585
commit
3e300c1f35
|
@ -208,7 +208,7 @@ function isPlainObject(obj) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function sortObjectsByIds(idName, ids, objects) {
|
function sortObjectsByIds(idName, ids, objects, strict) {
|
||||||
ids = ids.map(function(id) {
|
ids = ids.map(function(id) {
|
||||||
return (typeof id === 'object') ? id.toString() : id;
|
return (typeof id === 'object') ? id.toString() : id;
|
||||||
});
|
});
|
||||||
|
@ -225,6 +225,7 @@ function sortObjectsByIds(idName, ids, objects) {
|
||||||
objects.forEach(function(x) {
|
objects.forEach(function(x) {
|
||||||
if (typeof x === 'object') {
|
if (typeof x === 'object') {
|
||||||
var idx = indexOf(x);
|
var idx = indexOf(x);
|
||||||
|
if (strict && idx === -1) return;
|
||||||
idx === -1 ? tailing.push(x) : heading.push(x);
|
idx === -1 ? tailing.push(x) : heading.push(x);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -206,9 +206,15 @@ describe('sortObjectsByIds', function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should sort - partial ids', function() {
|
it('should sort - partial ids', function() {
|
||||||
var sorted =sortObjectsByIds('id', [5, 3, 2], items);
|
var sorted = sortObjectsByIds('id', [5, 3, 2], items);
|
||||||
var names = sorted.map(function(u) { return u.name; });
|
var names = sorted.map(function(u) { return u.name; });
|
||||||
should.deepEqual(names, ['e', 'c', 'b', 'a', 'd', 'f']);
|
should.deepEqual(names, ['e', 'c', 'b', 'a', 'd', 'f']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should sort - strict', function() {
|
||||||
|
var sorted = sortObjectsByIds('id', [5, 3, 2], items, true);
|
||||||
|
var names = sorted.map(function(u) { return u.name; });
|
||||||
|
should.deepEqual(names, ['e', 'c', 'b']);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
Loading…
Reference in New Issue