JSFiddle - React, Tailwind, and code Playground

by Hellfrom

JavaScript

var arr=[{a:1,b:2},{a:1,b:3},{a:1,b:1},{a:1,b:2},{a:1,b:3}];

window.helpers=(function (){
    var lookupIterator = function(value) {
            if (value == null){
                return function(value) {
                    return value;
                };
            }
            if (typeof value === 'function'){
                    return value;
            }
            return function(obj) {
                return obj[value];
            };
        },
        each = function(obj, iterator, context) {
            var breaker = {};
            if (obj == null) return obj;
            if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {
                obj.forEach(iterator, context);
            } else if (obj.length === +obj.length) {
                for (var i = 0, length = obj.length; i < length; i++) {
                    if (iterator.call(context, obj[i], i, obj) === breaker) return;
                }
            } else {
                var keys = []
                for (var key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) keys.push(key)
                for (var i = 0, length = keys.length; i < length; i++) {
                    if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
                }
            }
            return obj;
        },
        // An internal function used for aggregate "group by" operations.
        group = function(behavior) {
            return function(obj, iterator, context) {
                var result = {};
                iterator = lookupIterator(iterator);
                each(obj, function(value, index) {
                    var key = iterator.call(context, value, index, obj);
                    behavior(result, key, value);
                });
                return result;
            };
        };

    return {
        groupBy : group(function(result, key, value) {
            Object.prototype.hasOwnProperty.call(result, key) ? result[key].push(value) :...