如果数组有多个id,则创建新对象
我们有一个像
const arr = [{
name: 'foo',
age: 23,
id: [1, 2]
}, {
name: 'bar',
age: 24,
id: [3, 4]
}, {
name: 'baz',
age: 24,
id: 5
}];
如果对象具有 id 数组,则应将新对象添加到数组中
预期的
const newArry = [{
name: 'foo',
age: 23,
id: 1,
}, {
name: 'foo',
age: 23,
id: 2
}, {
name: 'bar',
age: 24,
id: 3
}, {
name: 'bar',
age: 24,
id: 4
}, {
name: 'baz',
age: 24,
id: 5
}]
任何人都知道更好的方法。请帮忙!!!
回答
你可以利用flatMap这个。首先,您将检查 id 是否为数组类型,如果是,则在其上应用 map 并返回适当的值。
const arr = [{name: 'foo', age: 23, id: [1,2]}, {name: 'bar', age: 24, id: [3,4]}, {name: 'baz', age: 24, id: 5}];
const result = arr.flatMap(e=>Array.isArray(e.id) ? e.id.map(id=>({...e,id})) : e);
console.log(result);
但是,请在此处检查 flatMap 的浏览器兼容性。作为替代,您可以使用 reduce 方法。