Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document the utils module and reference it in the randomization docs #3128

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
93 changes: 93 additions & 0 deletions docs/reference/jspsych-utils.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# jsPsych.utils

The jsPsych.utils module contains utility functions that might turn out useful at one place or the other.

---

## jsPsych.utils.unique

```javascript
jsPsych.utils.unique(array)
```

### Parameters

| Parameter | Type | Description |
| --------- | ----- | ------------------------------ |
| array | Array | An array of arbitrary elements |

### Return value

An array containing all elements from the input array, but without duplicate elements

### Description

This function takes an array and returns a copy of that array with all duplicate elements removed.

### Example

```javascript
jsPsych.utils.unique(["a", "b", "b", 1, 1, 2]) // returns ["a", "b", 1, 2]
```

---

## jsPsych.utils.deepCopy

```javascript
jsPsych.utils.deepCopy(object);
```

### Parameters

| Parameter | Type | Description |
| --------- | --------------- | ---------------------------- |
| object | Object or Array | An arbitrary object or array |

### Return value

A deep copy of the provided object or array

### Description

This function takes an arbitrary object or array and returns a deep copy of it, i.e. all child objects or arrays are recursively copied too.

### Example

```javascript
var myObject = { nested: ["array", "of", "elements"] };
var deepCopy = jsPsych.utils.deepCopy(myObject);
deepCopy.nested[2] = "thingies";
console.log(myObject.nested[2]) // still logs "elements"
```

---

## jsPsych.utils.deepMerge

```javascript
jsPsych.utils.deepMerge(object1, object2);
```

### Parameters

| Parameter | Type | Description |
| --------- | ------ | --------------- |
| object1 | Object | Object to merge |
| object2 | Object | Object to merge |

### Return value

A deep copy of `object1` with all the (nested) properties from `object2` filled in

### Description

This function takes two objects and recursively merges them into a new object. If both objects define the same (nested) property, the property value from `object2` takes precedence.

### Example

```javascript
var object1 = { a: 1, b: { c: 1, d: 2 } };
var object2 = { b: { c: 2 }, e: 3 };
jsPsych.utils.deepMerge(object1, object2); // returns { a: 1, b: { c: 2, d: 2 }, e: 3 }
```
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ nav:
- 'jsPsych.data': 'reference/jspsych-data.md'
- 'jsPsych.randomization': 'reference/jspsych-randomization.md'
- 'jsPsych.turk': 'reference/jspsych-turk.md'
- 'jsPsych.utils': 'reference/jspsych-utils.md'
- 'jsPsych.pluginAPI': 'reference/jspsych-pluginAPI.md'
- Plugins:
- 'List of Plugins': 'plugins/list-of-plugins.md'
Expand Down