join-array
Version:
Join the elements of an array into a string. Indicate the regular and the last one separator. Indicate the maximum number of items to concatenate.
96 lines (79 loc) • 4.39 kB
Markdown
# Description
`join-array` joins the elements of an array into a [String] value, and returns that value. In addition you can specify:
* the **regular separator**, that separates the subsequent items' values
* the **last separator**, that separates the last and the last but one item's value
* the **maximal number** of items to join. If the array contains more items that expected, it ommits the middle ones, joins the last one to the [String] chain and returns this incomplete chain.
* the **message** that replaces the missing items in the [String] chain.
* how **each** item's value should be displayed in the chain
Any bugs found? Give me to know on [GitHub](https://github.com/devrafalko/join-array)
# Installation
### NodeJS
`npm install join-array`
### Browser
Load the `join-array.min.js` file from the `dist` folder into your `.html` file.
The module is accessible as `joinArray` in the window scope.
It is a babel converted and webpack bundled [ES5] module version.
```html
<script src="join-array.min.js"></script>
<script>
var list = joinArray({
array: ['Jasmine', 'Adam', 'Amanda', 'Nicky'],
separator: ', '
});
</script>
```
# Sample
```javascript
const join = require('join-array');
const names = ['Rachel','Taylor','Julia','Robert','Jasmine','Lily','Madison'];
const config = {
array: names,
separator: ', ',
last: ' and ',
max: 4,
maxMessage:(missed)=>`(${missed} more...)`,
each:(value)=>value
};
const list = join(config); //Rachel, Taylor, Julia, (3 more...) and Madison
```
```javascript
const join = require('join-array');
const cars = ['BMW','Tesla','Audi','Honda','Aston Martin','Cadillac','Citroen'];
const list = join(cars, " | ", " | ", 3, "[...]"); //BMW | Tesla | [...] | Citroen
```
# Usage
##### Syntax:
* **`join(array:Array, separator:String|null, last:String|null, max:Number|null, maxMessage:Function|String|null, each:Function|null)`**
* **`join(config:Object)`** where `config` contains the following properties: `array:Array`, `separator:String|null`, `last:String|null`, `max:Number|null`, `maxMessage:Function|String|null`, `each:Function|null`.
> When the `null` is passed as the argument, the default value is used for this parameter.
> When the [Object] `config` property is omitted *(if optional)* or set to `null`, the default value is used for this property.
> The `TypeError` is thrown when any argument type or `config` property type is invalid.
> Follow the `TypeError.message` instructions to configure the module.
##### `array` [Array]
**Description:** Indicates the [Array] object, which items are joined into the [String] value.
##### `separator` [String|null] *(optional)*
**Default:** `", "`
**Description:** It separates all but the last one subsequent items of the `array`.
##### `last` [String|null] *(optional)*
**Default:** `" and "`
**Description:** It separates the last and the last but one item of the `array`.
##### `max` [Number|null] *(optional)*
**Default:** `Infinity`
**Description:** If defined, it limits the number of `array` items to be joined; *eg. if the `max` equals **`10`** and the `array` contains 100 items, the **first 9** items and the **100th** one are joined.*
##### `maxMessage` [Function|String|null] *(optional)*
**Default:** ``(missed)=>`(${missed} more...)` ``
**Description:** If the number of `array` items is bigger than the `max` value, the missed items are replaced by the `maxMessage` value.
* When `[String]`, it is directly appended into the [String] chain before the last item.
* When `[Function]`, it expects the [String] value to be returned. The `missed` argument passed through this function equals the number of missed items and can be used in the returned [String] message.
##### `each` [Function|null] *(optional)*
**Default:** `null`
**Description:** If the `each` is defined, the module loops through each `array` item and calls the [Function] `each` with the following parameters: `each(item, iter, array)`. Use `each` function to modify the value. The **returned** value will be used in the chain.
```javascript
const join = require('join-array');
const ids = [1,2,3,4,5];
const config = {
array: ids,
each:(value)=>`"id. ${value}"`
};
const list = join(config); //"id. 1", "id. 2", "id. 3", "id. 4" and "id. 5"
```