账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js-算法数据按照对象的key分类
    25
    0

    原始数据结构如下,为一个对象

    let o = {
        1: {id: 1},
        1.1: {id: 1.1},
        1.1.1: {id: 1.1.1},
        1.1.2: {id: 1.1.2},
        1.2.: {id: 1.2},
        1.2.1: {id: 1.2.1},
        1.3: {id: 1.3},
        1.3.1: {id: 1.3.1},
        1.3.1.1: {id: 1.3.1.1},
        1.3.1.2: {id: 1.3.1.2},
        2: {id: 2},
        2.1: {id: 2.1},
        2.1.1: {id: 2.1.1},
        2.1.2: {id: 2.1.2},
        2.2.: {id: 2.2},
    }

    转变成如下格式,根据key的层级包装数组

    let a = [
      {id: '1', 
      children: [
        {id: '1.1',
        children: [{id: '1.1.1'},{id: '1.1.2'}]}, 
        {id: '1.2',
        children:[{id: '1.2.1'}]},
        {id: '1.3', 
        children:[
          {id: '1.3.1', 
          children: [
            {id: '1.3.1.1'},
            {id: '1.3.1.2'}]}]}]},
      {id: '2',
      children: [
        {id: '2.1', 
        children: [{id: '2.1.1'}, {id: '2.1.2'}]},
        {id: '2.2'}]}
    ]

    请问应该怎么实现? 谢谢

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 世浪缠身 普通会员 1楼

      在JavaScript中,我们可以使用数组的map方法和对象的属性来将对象按照其key进行分类。以下是一个简单的例子:

      ```javascript let obj = { name: 'John', age: 30, city: 'New York' };

      let keys = Object.keys(obj); keys.sort(); // Sort the keys in alphabetical order

      let categories = keys.map(key => { return obj[key]; });

      console.log(categories); // Output: [ 'John', 'age', 'city' ] ```

      在这个例子中,我们首先使用Object.keys方法获取对象的所有key,然后使用sort方法对它们进行排序。最后,我们使用map方法遍历排序后的keys数组,将每个key对应的值返回。

      注意,map方法会创建一个新的数组,其中的元素是原数组的每个元素被新数组中的键所取代。如果你不希望创建新的数组,可以使用map函数的第二个参数来设置它为undefined,或者使用Array.from方法。

      ```javascript let obj = { name: 'John', age: 30, city: 'New York' };

      let categories = Object.keys(obj).map(key => obj[key]); console.log(categories); // Output: [ 'John', 'age', 'city' ] ```

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部