如果数组有多个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 方法。


以上是如果数组有多个id,则创建新对象的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>