js 一维数组,转成嵌套数组

// 情况一:
// 数据源
var
egs = [ {name_1: 'name_1...'}, {name_2: 'name_4...'}, {name_3: 'name_3...'}, {name_0: 'name_0...'}, ].reverse()
// 最终想要的数据形式
// {name_1: 'name_1...', // children: [ // {name_2: 'name_2...', // children: [ // {name_3: 'name_3...'}, // ] // } // ] // } var result = {} var key ='children' s(egs) function s(arrs) { arrs.forEach((o, i) => { console.log('---'+ i + ': ', result) if (!result[key]) { result[key] = [o] } else { o[key] = [result] result = o } }) } console.log(result)
// 情况二:
// pId 对应父级 id
let arr = [
    { pId: '-1', id: '0', name: '父级1' },
    { pId: '0', id: '1', name: '父级1-1' },
    { pId: '0', id: '2', name: '父级1-2' },
    { pId: '2', id: '21', name: '子级21' },
  ]

  function buildTree (arr) {
    let temp = {}
    let tree = {}
    // 数组转 键值对
    arr.forEach(item => {
      temp[item.id] = item
    })

    let tempKeys = Object.keys(temp)
    tempKeys.forEach(key => {
      // 获取当前项
      let item = temp[key]
      // 当前项 pId
      let _itemPId = item.pId
      // 获取父级项
      let parentItemByPid = temp[_itemPId]
      if (parentItemByPid) {
        if (!parentItemByPid.children) {
          parentItemByPid.children = []
        }
        parentItemByPid.children.push(item)
      } else {
        tree[item.id] = item
      }
    })
    // 对象转数组并返回
    return Object.keys(tree).map(key => tree[key])
  }
 
 

 

转载于:https://www.cnblogs.com/gavin007/p/8340200.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将一个一维数组换为二维数组,你可以使用循环或其他方法来按照所需的行和列分割原始数组。下面是两种常见的方法: 方法一:使用循环进行分割 ```javascript function convertTo2DArray(arr, rows, cols) { var result = []; var index = 0; for (var i = 0; i < rows; i++) { var row = []; for (var j = 0; j < cols; j++) { if (index < arr.length) { row.push(arr[index]); } index++; } result.push(row); } return result; } var arr = [1, 2, 3, 4, 5, 6]; var rows = 2; var cols = 3; var result = convertTo2DArray(arr, rows, cols); console.log(result); // 输出: [[1, 2, 3], [4, 5, 6]] ``` 在上面的示例中,`convertTo2DArray` 函数接受原始数组 `arr`、期望的行数 `rows` 和列数 `cols`。通过嵌套的循环,我们按照所需的行和列分割原始数组,并将结果存储在 `result` 中。 方法二:使用 `slice()` 方法进行分割 ```javascript function convertTo2DArray(arr, rows, cols) { var result = []; for (var i = 0; i < arr.length; i += cols) { result.push(arr.slice(i, i + cols)); } return result; } var arr = [1, 2, 3, 4, 5, 6]; var rows = 2; var cols = 3; var result = convertTo2DArray(arr, rows, cols); console.log(result); // 输出: [[1, 2, 3], [4, 5, 6]] ``` 在上面的示例中,我们使用 `slice()` 方法按照 `cols` 的大小将原始数组分割成子数组,并将它们存储在 `result` 中。 无论使用哪种方法,你都可以将一维数组换为二维数组。只需根据需要选择适合你的方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值