-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Lodash Migration
Starting from Mixxx 2.5.0, the embedded lodash.mixxx.js
library is deprecated and planned for removal in Mixxx 2.6.0.
This document is here to help controller maintainers migrate from Lodash functions to ES6/ES7 new features.
_.assign
can simply be replaced by Object.assign
.
_.merge
works like _.assign
except it recursively merge two objects. Such a use case is currently unknown in Mixxx controllers.
However, if you have a valid use case for _.merge
, don't hesitate to open an issue
describing it.
_.forEach
can transparantly be replaced by Array.prototype.forEach
when using an Array
, a Map
and other common
containers and for … of
for most of other Js iterables.
A key/value pair iteration over objects is also achivable using Object.entries
and Map.prototype.entries
:
const opts = {
var1 : "Test",
}
Object.entries(opts).forEach(([k, v]) => {
// do something here
});
const map = new Map([
[1, "un"],
[2, "deux"],
[3, "trois"],
]);
map.forEach((k, v) => {
// do something here
});
For Array
's, _.map
can transparently be replaced by Array.prototype.map
in most cases:
[1, 2, 3].map(it => it + 1);
_.filter
can be replaced by Array.prototype.filter
for Array
and Object.entries(obj).filter
:
[1, 2, 3, 4, 5].filter(it => it % 2 === 0);
Object.entries({
midi: [], deckNum: 1
}).filter(
([k, v]) => Number.isInteger(v)
);
When instanciating an Array
, using the constructor, _.map
, _.filter
and _.forEach
work differently
than their Array.prototype
counterparts on sparse arrays.
let arr = Array(4);
// [ <4 empty items> ]
_.map(arr, (_elem, i) => i);
// [ 0, 1, 2, 3 ]
arr.map((_elem, i) => i)
// [ <4 empty items> ]
In most cases, it's better to instanciate and initialize the Array
in the same expression using []
.
In particularly large arrays, you can use the fact that Array.prototype.fill
does not ignore empty items
to initalize the array with some value and then iterate over that (eg Array(16).fill(0).map(...)
).
The function above are the one typically used in official controllers. If you have another usecase, don't hesitate to open an issue so we can documnent it here.
Mixxx is a free and open-source DJ software.
Manual
Hardware Compatibility
Reporting Bugs
Getting Involved
Contribution Guidelines
Coding Guidelines
Using Git
Developer Guide
Creating Skins
Contributing Mappings
Mixxx Controls
MIDI Scripting
Components JS
HID Scripting