Skip to content

Instantly share code, notes, and snippets.

@islishude
Created May 28, 2019 02:36
Show Gist options
  • Save islishude/e4ee647a96c87687844f4920eb17d091 to your computer and use it in GitHub Desktop.
Save islishude/e4ee647a96c87687844f4920eb17d091 to your computer and use it in GitHub Desktop.
JavaScript array flatten
const { deepStrictEqual } = require("assert");
function flat(data) {
function* _flat(arr) {
for (const v of arr) {
if (v instanceof Array) {
yield* _flat(v);
} else {
yield v;
}
}
}
return [..._flat(data)];
}
const testData = [
{
name: "1",
param: [],
want: []
},
{
name: "",
param: [1, ["a", [1, 2, [3, 4]]]],
want: [1, "a", 1, 2, 3, 4]
},
{
name: "2",
param: [1, 2, 3, 4],
want: [1, 2, 3, 4]
}
];
for (const { name, param, want } of testData) {
deepStrictEqual(flat(param), want, `${name} tests failed`);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment