拆解对象

从一个对象和其数组类型的属性中生成一个对象数组。

  • 使用对象解构来排除指定 key 的键值对。
  • 使用 Array.prototype.map() 来创建一个对象数组,其中包含给定 key 的值。
  • 每个对象包含原始对象的值,除了 key,它被映射为其各个值。
const unwind = (key, obj) => {
  const { [key]: _, ...rest } = obj;
  return obj[key].map(val => ({ ...rest, [key]: val }));
};

unwind('b', { a: true, b: [1, 2] }); // [{ a: true, b: 1 }, { a: true, b: 2 }]