如何实现:合并数组中ID相同的对象,并根据语言变量动态赋值

现有如下结构数组,要求将具有相同lesson_id和number的对象合并,并更加lang字段动态添加cname、ename键值
newData = [
{
"lesson_id": 56,
"lesson_name": "Adopt a Coaching Mindset",
"lang": 1,
"number": 1
},
{
"lesson_id": 56,
"lesson_name": "采用辅导式思维",
"lang": 2,
"number": 1
},
{
"lesson_id": 205,
"lesson_name": "Build a Coaching Habit",
"lang": 1,
"number": 2
},
{
"lesson_id": 205,
"lesson_name": "培养辅导习惯",
"lang": 2,
"number": 2
}
]
// 以number为标识,如果没有那么在定义的对象中创建它
let newObj = {}
newData.forEach(function (element) {
   if (typeof newObj[element.number] === 'undefined') {
      newObj[element.number] = {
      id: element.lesson_id,
      cname: '',
      ename: '',
      number: element.number
    }
  }
newObj[element.number][element.lang === 1 ? 'ename' : 'cname'] = element.lesson_name
}, this)

// 删除空数据
for (let i = 0; i < newObj.length; i++) {
   if (newObj[i] === '' || typeof (newObj[i]) === 'undefined') {
      newObj.splice(i, 1)
      i = i - 1
   }
}

// 提取有用数据存储为数组
let arr1 = []
for (let item in newObj) {
  let obj1 = {
    id: newObj[item].id,
    cname: newObj[item].cname,
    ename: newObj[item].ename
 }
   arr1.push(obj1)
}
return arr1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值