代码之家  ›  专栏  ›  技术社区  ›  user1595858

将键值对数组转换为一个对象

  •  -1
  • user1595858  · 技术社区  · 7 年前

    如何将以下键、值对数组转换为单个对象。

           arr = [ { '/a': { component: [Function] },
                '/a/1': { component: [Function] },
                '/a/2': { component: [Function] },
                '/a/2/1': { component: [Function] },
                '/ab/2/1': { component: [Function] },
                '/b/1': { component: [Function] },
                '/b/login/register': { component: [Function] } },
    
                 { '/ac': { component: [Function] },
                '/a/1': { component: [Function] } },
                ]
    

    将上面的对象转换为

       obj = { '/a': { component: [Function] },
            '/a/1': { component: [Function] },
            '/a/2': { component: [Function] },
            '/a/2/1': { component: [Function] },
            '/ab/2/1': { component: [Function] },
            '/b/1': { component: [Function] },
            '/b/login/register': { component: [Function] } } 
    

    更新

    当存在重复键时,我们喜欢在将数组对象合并到对象中时记录警告。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Simone Sanfratello    7 年前
    const obj = {};
    
    for(let row of arr) { 
      for(let key in row) {
        if(key === 'component') {
          continue
        }
        if(obj[key]) {
          console.warn('duplicate key', key)
        }
        obj[key] = row[key]
      }
    }
    
    console.log(obj)