问答

js for循环以逗号拆分为新数组

作者:admin 2021-04-17 我要评论

原数据格式↓ const data = [{ name: 'apple', cut: 'a,b,c' }, { name: 'trigger', cut: 'a,g' }] 期望数据格式↓ const data1 = [{ name: 'apple', final: 'a'...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

原数据格式↓

const data = [{ name: 'apple', cut: 'a,b,c' }, { name: 'trigger', cut: 'a,g' }]

期望数据格式↓

const data1 = [{ name: 'apple', final: 'a' },
               { name: 'apple', final: 'b' },
               { name: 'apple', final: 'c' },
               { name: 'trigger', final: 'a' },
               { name: 'trigger', final: 'g' }]

在原数据格式data中的cut字段,用逗号来拆分为新字段final,name不变

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

###

基本思路:把 cut 拆分之后进行一次映射,可以拿到每个原始对象对应的一个数组,组合起来就是一个二维数据;再把这个二维数据展开,就是你要的答案。

flatMap 就是先映射再展开

const data = [{ name: 'apple', cut: 'a,b,c' }, { name: 'trigger', cut: 'a,g' }];

const data1 = data.flatMap(it =>
    it.cut.split(",")
        .map(s => ({ name: it.name, final: s }))
);

console.log(data1);
###
const data = [{ name: 'apple', cut: 'a,b,c' }, { name: 'trigger', cut: 'a,g' }]
const res = []
data.forEach(item => {
  const arr = item.cut.split(',')
  arr.forEach(it => {
    res.push({
      name: item.name,
      final: it
    })
  })
})
console.log(res)
###
const data = [{ name: 'apple', cut: 'a,b,c' }, { name: 'trigger', cut: 'a,g' }]
console.log(data.reduce((total, item) => {
  return total.concat(item.cut.split(',').map(val => {
    const res = {}
    res.name = item.name
    res.final = val
    return res
  }))
}, []))
###
data.reduce((a,c)=>{
    c.cut.split(',').forEach(final=>{
       a.push({
         name:c.name,
         final  
       })
    })
    return a;
},[])
###
const data = [{ name: 'apple', cut: 'a,b,c' }, { name: 'trigger', cut: 'a,g' }];

const split = (arr) => {
    if (!arr || !Array.isArray(arr) || !arr.length) {
        return;
    }
    return arr.reduce((val, acc) => {
        acc.cut.split(',').forEach((item) => {
            val.push({
                name: acc.name,
                cut: item,
            });
        });
        return val;
    }, [])
};

console.log(split(data));

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器