Skip to content

jsPsych.utils

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


jsPsych.utils.unique

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

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

jsPsych.utils.deepCopy

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

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

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

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 }