Object が key => array となっているような Object を flatten する場合。(他の場合も少し頑張ればいけます)
下記は TypeScript ですが、JSも似たような感じでできます。
static flatten(object: object): string[][] {
const flattenSub = (sum: string[], obj: any): string[][] => {
if (obj instanceof Array) {
return (obj as string[]).map( val => {
return sum.concat(val);
});
} else if (obj instanceof Object ) {
return Object.keys(obj).reduce( (result, key): string[][] => {
flattenSub(sum.concat(key), obj[key]).forEach(arr => {
result.push(arr);
});
return result;
}, []);
}
};
return flattenSub([], object);
}