mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-01-29 06:27:49 +00:00
Simplify _.flatten and add benchmarks.
Former-commit-id: f541328bf680a75abea68bce813820def375f4a0
This commit is contained in:
@@ -976,9 +976,6 @@
|
||||
* // => [1, 2, 3, [[4]]];
|
||||
*/
|
||||
function flatten(array, shallow) {
|
||||
if (shallow) {
|
||||
return concat.apply(ArrayProto, array);
|
||||
}
|
||||
var value,
|
||||
index = -1,
|
||||
length = array.length,
|
||||
@@ -987,7 +984,7 @@
|
||||
while (++index < length) {
|
||||
value = array[index];
|
||||
if (isArray(value)) {
|
||||
push.apply(result, flatten(value));
|
||||
push.apply(result, shallow ? value : flatten(value));
|
||||
} else {
|
||||
result.push(value);
|
||||
}
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<script src="../lodash.min.js"></script>
|
||||
<script src="../lodash.js"></script>
|
||||
<script>
|
||||
var lodash = _.noConflict();
|
||||
</script>
|
||||
<script src="../vendor/underscore/underscore-min.js"></script>
|
||||
<script src="../vendor/underscore/underscore.js"></script>
|
||||
<script src="../vendor/benchmark.js/benchmark.js"></script>
|
||||
<script src="../vendor/firebug-lite/src/firebug-lite-debug.js"></script>
|
||||
<script>
|
||||
|
||||
53
perf/perf.js
53
perf/perf.js
@@ -48,7 +48,12 @@
|
||||
_ = window._,
|
||||
lodash = window.lodash,
|
||||
numbers = [],
|
||||
object = {};
|
||||
object = {},
|
||||
words = [
|
||||
'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine',
|
||||
'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen',
|
||||
'seventeen', 'eighteen', 'nineteen', 'twenty'
|
||||
];
|
||||
|
||||
for (var index = 0; index < 20; index++) {
|
||||
numbers[index] = index;
|
||||
@@ -119,8 +124,6 @@
|
||||
})
|
||||
);
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('each object')
|
||||
.add('Lo-Dash', function() {
|
||||
@@ -139,6 +142,50 @@
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('flatten deep')
|
||||
.add('Lo-Dash', function() {
|
||||
lodash.flatten([1, [2], [3, [[4]]]]);
|
||||
})
|
||||
.add('Underscore', function() {
|
||||
_.flatten([1, [2], [3, [[4]]]]);
|
||||
})
|
||||
);
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('flatten shallow')
|
||||
.add('Lo-Dash', function() {
|
||||
lodash.flatten([1, [2], [3, [[4]]]], true);
|
||||
})
|
||||
.add('Underscore', function() {
|
||||
_.flatten([1, [2], [3, [[4]]]], true);
|
||||
})
|
||||
);
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('groupBy with callback')
|
||||
.add('Lo-Dash', function() {
|
||||
lodash.groupBy(numbers, function(num) { return Math.floor(num); });
|
||||
})
|
||||
.add('Underscore', function() {
|
||||
_.groupBy(numbers, function(num) { return Math.floor(num); });
|
||||
})
|
||||
);
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('groupBy with property name')
|
||||
.add('Lo-Dash', function() {
|
||||
lodash.groupBy(words, 'length');
|
||||
})
|
||||
.add('Underscore', function() {
|
||||
_.groupBy(words, 'length');
|
||||
})
|
||||
);
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
suites.push(
|
||||
Benchmark.Suite('keys')
|
||||
.add('Lo-Dash', function() {
|
||||
|
||||
Reference in New Issue
Block a user