js 根据条件改造对象

发布于 2022-09-12 22:46:32 字数 602 浏览 14 评论 0

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的格式呢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

永不分离 2022-09-19 22:46:32
//转换最直接的方法就是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}
})
梦情居士 2022-09-19 22:46:32
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] }))
尽揽少女心 2022-09-19 22:46:32
data.map(item => {
    return {
        updateTime: item.id,
        dimensionColumn: item.id.split(",").map(id => {
            return list.find(s => s.updateTime == id)?.dimensionColumn;
        }).join(",")
    }
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文