js 根据条件改造对象

const list = [{ updateTime: '1', dimensionColumn: '苹果' }, 
              { updateTime: '2', dimensionColumn: '香蕉' }, 
              { updateTime: '3', dimensionColumn: '梨子' }]

原数据格式↓

const data = [{ id: '1,2' }, { id: '3' }]

理想效果↓

const result = [{ updateTime: '1,2', dimensionColumn: '苹果,香蕉' },
                { updateTime: '3', dimensionColumn: '梨子' }]

data的id对应的是list的updateTime,data中单条id的数量不一定,多个的话用逗号隔开,包括相对应的dimensionColum也是

顺带请教下大家成功转换为result的格式后,怎么转回data的格式呢

请教各位大神该如何操作,小弟在这里先谢谢各位大神的解答了,感激不尽!

阅读 2.3k
3 个回答
//转换最直接的方法就是for循环
const result = []; 
for(let i in data){
    const ids = data[i].id.split(',');
    const arr = [];
    for(let j in ids){
        for(let k in list){
            if(ids[j] == list[k].updateTime){
                arr.push(list[k].dimensionColumn);
            }
        }
    }
    const obj = {updateTime:data[i].id,dimensionColumn:arr.join(",")}
    result.push(obj)
}
//还原
const data2 = result.map((item)=>{
    return {id:item.updateTime}
})
const result = [{ updateTime: '1,2', dimensionColumn: '苹果,香蕉' },
                { updateTime: '3', dimensionColumn: '梨子' }]
const u = result.map(i => i.updateTime).join().split(","),
      c = result.map(i => i.dimensionColumn).join().split(","),
      data = []
u.forEach((v, k) => data.push({ updateTime: v, dimensionColumn: c[k] }))
data.map(item => {
    return {
        updateTime: item.id,
        dimensionColumn: item.id.split(",").map(id => {
            return list.find(s => s.updateTime == id)?.dimensionColumn;
        }).join(",")
    }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题