项目需求,根据zhu字段对设备进行分组,并更改设备名称为组名称,实习记录(2)

        项目中的数据是一个对象中,每个元素又都是一个对象数组,而在使用上我们只用到每个元素中对象数组上的第一项,所以我把每个元素对象数组中的第一项都提取出来变成一个新的数组。

        提取出来的数据以下面为示例:

  const deviceArray = [
  { deviceName: 'A1', zhu: '1-1' },
  { deviceName: 'A2', zhu: '1-2' },
  { deviceName: 'A3', zhu: '1-1000' },
  { deviceName: 'A4', zhu: '2-1' },
  { deviceName: 'A5', zhu: '2-2' },
  { deviceName: 'A6', zhu: '2-1000' },
  { deviceName: 'A7', zhu: '3-1' },
  { deviceName: 'A8', zhu: '3-2' },
  { deviceName: 'A9', zhu: '3-1000' },
];

        需求转化一下,就是我们要遍历这个数组,遇到zhu字段包含-1000就为一个组的末尾,其与其前面设备的名称都需要改为这一组第一台设备和最后一台设备。

function addFirstAndLastDeviceName(devices) {
  let startIndex =0
  devices.map((device, index) => {
    if (device.zhu.includes('-1000')) {
      let firstDevice = devices[startIndex]
      let lastDevice = devices[index]
      // 对于包含-1000的设备,找到它前面的所有设备,
       for (let i = startIndex; i <= index; i++) {
        devices[i]={
        ...devices[i],
        firstDeviceName: firstDevice.deviceName ,
        lastDeviceName:  lastDevice.deviceName ,
      }
    }
    // 更新startIndex为包含'-1000'的项的索引加1
      startIndex =index +1
    } 
  });
  return devices
}

        首先我们要有一个startIndex用来记录每一组的起始位置,用map方法遍历数组,传入设备和下标,当遇到设备中zhu字段包含-1000,为最后一组时,记录这一组设备第一个设备和最后一个设备,firstDevice和lastDevice,然后使用扩展运算符给这一组设备新增firstDeviceName和lastDeviceName值为firstDevice和lastDevice,随后更新startIndex索引为index+1,循环便能达到效果。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值