Skip to content

Instantly share code, notes, and snippets.

@warpr
Created August 21, 2014 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save warpr/2f4184f2f75da63158a5 to your computer and use it in GitHub Desktop.
Save warpr/2f4184f2f75da63158a5 to your computer and use it in GitHub Desktop.
_ = require('underscore');
var commonPrefix = function(l) {
return _(l).reduce(function (memo, item) {
if (!memo) {
return item;
}
var prefix = [];
for (var i = 0; i < item.length; i++) {
if (memo[i] == item[i]) {
prefix.push(item[i]);
} else {
return (prefix.length < memo.length) ? prefix : memo;
}
}
return prefix;
});
}
var data = [['a', 'b', 'c'], ['a', 'b', 'd']];
var knippen = commonPrefix(data).length;
var result = _(data).map(function (item) {
return item.slice(knippen);
});
console.log(result);
@daniel5gh
Copy link

                var lol = [['a', 'b', 'c'], ['a', 'b', 'd']];
                var done = false;
                _.each(lol, function (tags) {
                    if (done) return;
                    var same = tags[startIdx];
                    var allSame = _.every(lol, function (tags) {
                        return tags[startIdx] === same;
                    });
                    if (allSame) {
                        startIdx += 1;
                    } else {
                        // _.each has no break
                        done = true;
                    }
                });

// ...
parts.slice(startIdx).join(' - ')

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment