【问题标题】:Convert a Object with keys to an array of objects in javascript将带有键的对象转换为javascript中的对象数组
【发布时间】:2018-12-22 23:43:14
【问题描述】:

我在尝试将带有键的对象转换为 javascript 中的对象数组时遇到问题

将输入对象转换为类似于所需输出数组的结构的最佳方法是什么?

const routes = {
    Home: {
        screen: HomeScene,
        path: '/'
    },
    About: {
        screen: AboutScreen,
        path: '/about'
    }
};

const output_routes = 
[{
    component: Layout,
    routes: [{
        path: '/',
        exact: true,
        component: HomeScene,
    },
    {
        path: '/about',
        exact: true,
        component: AboutScreen,
    }],
}];

【问题讨论】:

  • 这不是一个坏问题,但也许不要像家庭作业问题那样说它。做一些研究尝试自己解决问题,然后发布失败的解决方案或庞大的解决方案,人们会更容易接受。我已经学会了艰难的方式,所以不要出汗。

标签: javascript routing react-native-web


【解决方案1】:

我能够实现如下。这有助于我对我在 react-native-web 应用程序中使用的 react-navigation 和 react-routerv4 使用相同的路由对象。

const ROUTES = {
    Home: {
        screen: 'HomeScene',
        path: '/'
    },
    About: {
        screen: 'AboutScreen',
        path: '/about'
    }
};

//const toArray = (ROUTES) => Object.keys(ROUTES).map(key => ROUTES[key]);
const routes_new = Object.keys(ROUTES).map((routeName,idx)=> {
const { screen: Screen, path } = ROUTES[routeName]; 
const routeProps = 
      {
                path,
                component: Screen,
                key: idx,
                exact: true
            }; 
  return routeProps

})

routes_server = [];
routes_server.push({
        component:'Layout',
    });

routes_new.push({component: 'NotFoundScene'})
routes_server.push({routes:routes_new})
console.log(routes_server);

【讨论】:

    【解决方案2】:

    Object.keys() 函数非常适合这样的事情。

    试试这个:

    function toArray(obj) {
      return Object.keys(obj).map(function(key) {
        return obj[key];
      });
    }
    

    或者,ES6

    const toArray = (obj) => Object.keys(obj).map(key => obj[key]);
    

    应该给你的:

    [
       { screen: HomeScene, path: '/' },
       { screen: AboutScreen, path: '/about' } 
    ]
    

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2018-05-29
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多