多维数据多维数组、嵌套对象降维为一维数据

文章介绍了两种在JavaScript中将多维数组降维的方法:使用`flat`方法和自定义的`for`循环实现。同时,展示了如何处理嵌套对象数组,将其转换为一维对象数组。这些技术对于数据处理和优化至关重要。
摘要由CSDN通过智能技术生成

一、多维数组降级

效果

代码

/**
 * 多维数组降维
 */

/** 
 * 方式1:flat方法
 * flat里面的参数是降维的维度,默认是1,如果不写则三维数组会
 * 被降维成[1,2,3,4,5,6[7,8,9]],n维数组可以通过 n维数组.flat(n-1)
 * 降维成一维数组
*/

const data = [1, 2, 3, [4, 5, 6, [7, 8, 9]], 10, 11]
console.log('flat', data.flat(2))

/** 
 * 方式2:for循环
*/
function mFlat (arr) {
  for (let i = 0; i < arr.length; i++) {
    // 是数组就
    if (arr[i] instanceof Array) {
      /**
       * 下面的就是这样的
       * arr = [1,2,3].concat([4, 5, 6, [7, 8, 9]], [10,11])
       * arr = [1,2,3,4,5,6,[7,8,9],10,11]
       * 下次判断符合条件就会就会执行
       * arr = [1,2,3,4,5,6].concat([7,8,9],[10,11]) = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
       * 这样就降级为一维数组了
       * 个人觉得方式一和方式二两种方式降维多维数组是比较简单的
       */
      arr = arr.slice(0, i).concat(arr[i], arr.slice(i + 1))
    }
  }
  return arr
}
console.log('mFlat', mFlat(data))

二、嵌套对象降维

效果

代码

/**
 * 路由多级嵌套数组处理成一维数组
 * @param arr 嵌套对象数组
 * @returns 返回处理后的一维对象数组
 */
const arr = [
  {
    label: '1',
    value: 1,
    children: [
      {
        label: '2',
        value: 2,
        children: [{ label: '3', value: 3 }]
      }
    ]
  },
  {
    label: '4',
    value: 4,
    children: [
      {
        label: '5',
        value: 5,
        children: [{ label: '6', value: 6 }]
      },
      {
        label: '7',
        value: 7,
        children: [{ label: '8', value: 8 }]
      }
    ]
  }
]
function mFlatObject (arr) {
  if (arr instanceof Array) {
    for (let i = 0; i < arr.length; i++) {
      if (arr[i].children && arr[i].children.length > 0) {
        arr = arr.slice(0, i + 1).concat(arr[i].children, arr.slice(i + 1))
      }
    }
  } else {
    console.log('传参错误')
  }
  return arr
}
console.log('对象降维', mFlatObject(arr))

以上便是对多维数组及嵌套对象的降维处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZL随心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值