js 复制数组中的每一条数据,但某个数据又不相同,怎么做?

 //原数据
 var list = [
    {id:1,name:'小红',gender:'女'},
    {id:1,name:'小明',gender:'男'},
    {id:1,name:'小强',gender:'男'}
]


//想要效果
var list = [
    {id:1,name:'小红',gender:'女', time:'早上'},
    {id:1,name:'小红',gender:'女', time:'下午'},
    {id:1,name:'小明',gender:'男', time:'早上'},
    {id:1,name:'小明',gender:'男', time:'下午'},
    {id:1,name:'小强',gender:'男', time:'早上'},
    {id:1,name:'小强',gender:'男', time:'下午'}
]

该怎么复制并添加不同的内容呢?

阅读 2.4k
3 个回答
//原数据
const list = [
    { id: 1, name: "小红", gender: "女" },
    { id: 1, name: "小明", gender: "男" },
    { id: 1, name: "小强", gender: "男" }
];

const times = ["早上", "下午"];

const result = list.flatMap(it => times.map(time => ({ ...it, time })));
console.log(result);

image.png

var list = [
    {id:1,name:'小红',gender:'女'},
    {id:1,name:'小明',gender:'男'},
    {id:1,name:'小强',gender:'男'}
]
function getList(list) {
    var listNew = list.map(item => [{...item, time: '早上'}, {...item, time: '下午'}])
    listNew = listNew.flat()
    return listNew
}    

console.log(getList(list))
类似笛卡尔积也就是这里的3*2,如果代码简洁的话还是要学边城大佬的

 let list = [
        {
            id: 1, name: '小红', sex: "女"
        }, {
            id: 1, name: '小明', sex: "男"
        }, {
            id: 1, name: '小强', sex: "男"
        },
    ]

    let timeList = ['早上', '下午'];
    let res = []
    list.forEach(item => {
        timeList.forEach(timeItem => {
            res.push({
                timeItem,
                ...item
            })
        })

    })
    console.log(res)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题