Expose _.join.

This commit is contained in:
John-David Dalton
2015-11-15 23:42:35 -08:00
parent cad0fbfc4d
commit a8d865a246
2 changed files with 61 additions and 35 deletions

View File

@@ -1422,6 +1422,7 @@
var nativeCeil = Math.ceil, var nativeCeil = Math.ceil,
nativeFloor = Math.floor, nativeFloor = Math.floor,
nativeIsFinite = context.isFinite, nativeIsFinite = context.isFinite,
nativeJoin = arrayProto.join,
nativeKeys = Object.keys, nativeKeys = Object.keys,
nativeMax = Math.max, nativeMax = Math.max,
nativeMin = Math.min, nativeMin = Math.min,
@@ -5746,6 +5747,24 @@
: []; : [];
}); });
/**
* Converts all elements in `array` into a string separated by `separator`.
*
* @static
* @memberOf _
* @category Array
* @param {Array} array The array to convert.
* @param {string} [separator=','] The element separator.
* @returns {string} Returns the joined string.
* @example
*
* _.join(['a', 'b', 'c'], '~');
* // => 'a~b~c'
*/
function join(array, separator) {
return array ? nativeJoin.call(array, separator) : '';
}
/** /**
* Gets the last element of `array`. * Gets the last element of `array`.
* *
@@ -13791,6 +13810,7 @@
lodash.isString = isString; lodash.isString = isString;
lodash.isTypedArray = isTypedArray; lodash.isTypedArray = isTypedArray;
lodash.isUndefined = isUndefined; lodash.isUndefined = isUndefined;
lodash.join = join;
lodash.kebabCase = kebabCase; lodash.kebabCase = kebabCase;
lodash.last = last; lodash.last = last;
lodash.lastIndexOf = lastIndexOf; lodash.lastIndexOf = lastIndexOf;
@@ -14025,10 +14045,10 @@
}); });
// Add `Array` and `String` methods to `lodash.prototype`. // Add `Array` and `String` methods to `lodash.prototype`.
arrayEach(['join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) { arrayEach(['pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) {
var func = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName], var func = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName],
chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName); retUnwrapped = /^(?:pop|replace|shift)$/.test(methodName);
lodash.prototype[methodName] = function() { lodash.prototype[methodName] = function() {
var args = arguments; var args = arguments;

View File

@@ -10657,6 +10657,44 @@
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
QUnit.module('lodash.join');
(function() {
var array = ['a', 'b', 'c'];
QUnit.test('should return join all array elements into a string', function(assert) {
assert.expect(1);
assert.strictEqual(_.join(array, '~'), 'a~b~c');
});
QUnit.test('should return an unwrapped value when implicitly chaining', function(assert) {
assert.expect(2);
if (!isNpm) {
var wrapped = _(array);
assert.strictEqual(wrapped.join('~'), 'a~b~c');
assert.strictEqual(wrapped.value(), array);
}
else {
skipTest(assert, 2);
}
});
QUnit.test('should return a wrapped value when explicitly chaining', function(assert) {
assert.expect(1);
if (!isNpm) {
assert.ok(_(array).chain().join('~') instanceof _);
}
else {
skipTest(assert);
}
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('lodash.keyBy'); QUnit.module('lodash.keyBy');
(function() { (function() {
@@ -21533,38 +21571,6 @@
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
QUnit.module('lodash(...).join');
(function() {
var array = [1, 2, 3];
QUnit.test('should return join all array elements into a string', function(assert) {
assert.expect(2);
if (!isNpm) {
var wrapped = _(array);
assert.strictEqual(wrapped.join('.'), '1.2.3');
assert.strictEqual(wrapped.value(), array);
}
else {
skipTest(assert, 2);
}
});
QUnit.test('should return a wrapped value when explicitly chaining', function(assert) {
assert.expect(1);
if (!isNpm) {
assert.ok(_(array).chain().join('.') instanceof _);
}
else {
skipTest(assert);
}
});
}());
/*--------------------------------------------------------------------------*/
QUnit.module('lodash(...).next'); QUnit.module('lodash(...).next');
lodashStable.each([true, false], function(implict) { lodashStable.each([true, false], function(implict) {
@@ -22528,7 +22534,7 @@
var acceptFalsey = lodashStable.difference(allMethods, rejectFalsey); var acceptFalsey = lodashStable.difference(allMethods, rejectFalsey);
QUnit.test('should accept falsey arguments', function(assert) { QUnit.test('should accept falsey arguments', function(assert) {
assert.expect(278); assert.expect(279);
var emptyArrays = lodashStable.map(falsey, lodashStable.constant([])); var emptyArrays = lodashStable.map(falsey, lodashStable.constant([]));