kebab case to camel case

Benchmark created by James on


Setup

function camel (str) {
        var arr = str.split('-');
        var arr1 = [];
        var arr2;
    
        arr.forEach(function (currStr, index) {
            var arr2 = currStr.split('');
            if (index === 0) {
                arr2[0] = arr2[0].toLowerCase();
            } else {
                arr2[0] = arr2[0].toUpperCase();
            }
            arr1.push(arr2.join(''));
        });
        return arr1.join('');
    }
    
            function dashToCamel(str) {
                                        var arr = str.split('-');
                                        var output = arr[0];
    
                                        for(var i = 1; i < arr.length; i++) {
                                                output += arr[i].charAt(0).toUpperCase() + arr[i].slice(1, arr[i].length);
                                        }
              return output;
            }
    
    var reg = /\-./g;
    var replacer = function(a) {
        return a.substr(1).toUpperCase();
      };
    var dashToCamel2 = function(str) {
      return str.replace(reg, replacer);
    };
    
    function camelize(input) {
        var arr = input.split('-');
        var camelArr = [arr[0]];
        for (var i = 1; i < arr.length; i++) {
            camelArr.push((arr[i].charAt(0).toUpperCase() + arr[i].substring(1)));
        }
        return camelArr.join('');
    }
    
    function capitalize(str) {
        var ret = str;
    
        if (str.length) {
            ret = str.slice(0,1).toUpperCase() + str.slice(1);
        }
        return ret;
    }
    
    function kabober(str, delim) {
        delim = delim || '-';
        var arr = str.split(delim);
        var ret = arr.shift();
        var chunk = arr.shift();
    
        while (arr.length) {
            chunk = capitalize(chunk);
            ret += chunk;
            chunk = arr.shift();
        }
    
        return ret;
    }
    
    function toCamel(str) {
      return str.split('-').reduce(function (memo, token) { 
        return memo + token.slice(0, 1).toUpperCase() + token.slice(1);
      });
    }

Test runner

Ready to run.

Testing in WebKit 537.36 / undefined
TestOps/sec
Ron
camel('foo-bar-baz');
camel('foo-barman-bazlurman-alpha-beta-theta');
ready
Tim
dashToCamel('foo-bar-baz');
dashToCamel('foo-barman-bazlurman-alpha-beta-theta');
ready
Matt
dashToCamel2('foo-bar-baz');
dashToCamel2('foo-barman-bazlurman-alpha-beta-theta');
ready
James
camelize('foo-bar-baz');
camelize('foo-barman-bazlurman-alpha-beta-theta');
ready
Dale
kabober('foo-bar-baz');
kabober('foo-barman-bazlurman-alpha-beta-theta');
ready
Rob
toCamel('foo-bar-baz');
toCamel('foo-barman-bazlurman-alpha-beta-theta');
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.