152 lines
2.5 KiB
Markdown
152 lines
2.5 KiB
Markdown
# array
|
|
|
|
The `array` function and its methods handle array creation and manipulation.
|
|
|
|
## Creation
|
|
|
|
### array(number)
|
|
|
|
Create an array of specified size, filled with `null`.
|
|
|
|
```javascript
|
|
array(3) // [null, null, null]
|
|
```
|
|
|
|
### array(number, initial)
|
|
|
|
Create an array with initial values.
|
|
|
|
```javascript
|
|
array(3, 0) // [0, 0, 0]
|
|
array(3, i => i * 2) // [0, 2, 4]
|
|
```
|
|
|
|
### array(array)
|
|
|
|
Copy an array.
|
|
|
|
```javascript
|
|
var copy = array(original)
|
|
```
|
|
|
|
### array(array, from, to)
|
|
|
|
Slice an array.
|
|
|
|
```javascript
|
|
array([1, 2, 3, 4, 5], 1, 4) // [2, 3, 4]
|
|
array([1, 2, 3], -2) // [2, 3]
|
|
```
|
|
|
|
### array(array, another)
|
|
|
|
Concatenate arrays.
|
|
|
|
```javascript
|
|
array([1, 2], [3, 4]) // [1, 2, 3, 4]
|
|
```
|
|
|
|
### array(object)
|
|
|
|
Get keys of an object.
|
|
|
|
```javascript
|
|
array({a: 1, b: 2}) // ["a", "b"]
|
|
```
|
|
|
|
### array(text)
|
|
|
|
Split text into grapheme clusters.
|
|
|
|
```javascript
|
|
array("hello") // ["h", "e", "l", "l", "o"]
|
|
array("👨👩👧") // ["👨👩👧"]
|
|
```
|
|
|
|
### array(text, separator)
|
|
|
|
Split text by separator.
|
|
|
|
```javascript
|
|
array("a,b,c", ",") // ["a", "b", "c"]
|
|
```
|
|
|
|
### array(text, length)
|
|
|
|
Split text into chunks.
|
|
|
|
```javascript
|
|
array("abcdef", 2) // ["ab", "cd", "ef"]
|
|
```
|
|
|
|
## Methods
|
|
|
|
### array.for(arr, fn, reverse, exit)
|
|
|
|
Iterate over elements.
|
|
|
|
```javascript
|
|
array.for([1, 2, 3], function(el, i) {
|
|
log.console(i, el)
|
|
})
|
|
|
|
// With early exit
|
|
array.for([1, 2, 3, 4], function(el) {
|
|
if (el > 2) return true
|
|
log.console(el)
|
|
}, false, true) // prints 1, 2
|
|
```
|
|
|
|
### array.find(arr, fn, reverse, from)
|
|
|
|
Find element index.
|
|
|
|
```javascript
|
|
array.find([1, 2, 3], 2) // 1
|
|
array.find([1, 2, 3], x => x > 1) // 1
|
|
array.find([1, 2, 3], x => x > 1, true) // 2 (from end)
|
|
```
|
|
|
|
### array.filter(arr, fn)
|
|
|
|
Filter elements.
|
|
|
|
```javascript
|
|
array.filter([1, 2, 3, 4], x => x % 2 == 0) // [2, 4]
|
|
```
|
|
|
|
### array.reduce(arr, fn, initial, reverse)
|
|
|
|
Reduce to single value.
|
|
|
|
```javascript
|
|
array.reduce([1, 2, 3, 4], (a, b) => a + b) // 10
|
|
array.reduce([1, 2, 3, 4], (a, b) => a + b, 10) // 20
|
|
```
|
|
|
|
### array.sort(arr, select)
|
|
|
|
Sort array (returns new array).
|
|
|
|
```javascript
|
|
array.sort([3, 1, 4, 1, 5]) // [1, 1, 3, 4, 5]
|
|
|
|
// Sort by field
|
|
array.sort([{n: 3}, {n: 1}], "n") // [{n: 1}, {n: 3}]
|
|
|
|
// Sort by index
|
|
array.sort([[3, "c"], [1, "a"]], 0) // [[1, "a"], [3, "c"]]
|
|
```
|
|
|
|
## Map with array()
|
|
|
|
The `array(arr, fn)` form maps over elements:
|
|
|
|
```javascript
|
|
array([1, 2, 3], x => x * 2) // [2, 4, 6]
|
|
|
|
array([1, 2, 3], function(el, i) {
|
|
return el + i
|
|
}) // [1, 3, 5]
|
|
```
|