JavaScript
flatten

JavaScript で Object を flatten する

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);
  }