Test, filter, reduce
by Walter Rumsby
JavaScript
(function () {
'use strict';
var test = function (obj, value) {
return obj && 'cls' in obj && obj.cls === value;
};
var filterFn = function (obj) {
return test(obj, 'x-actionbar');
};
var reduceFn = function (prev, next) {
if (test(prev, 'x-actionbar')) {
return prev;
} else if (test(next, 'x-actionbar')) {
return next;
}
return undefined;
};
var arr = [{
cls: ''
}, {
cls: 'x-actionbar'
}, {
cls: 'foo'
}, {
cls: 'x-actionbar'
}];
console.assert(arr.filter(filterFn).length < 2, 'More than 1 match');
console.log(arr.reduce(reduceFn));
}());