基本编程-将对象数组转换为多维对象

时间:2018-08-21 19:34:48

标签: javascript json maps javascript-objects

我已经坚持了几个小时。

我有一个对象列表:

const myCompanyList = [
    {name: 'coca-cola', size: 'big', color: 'red'},
    {name: 'my-cola', size: 'small', color: 'purple'},
    {name: 'pepsi', size: 'big', color: 'blue'}
];

我需要将其设置为以下格式:

myJson = {
    companies: {
        big: {
            coca-cola: {color: 'red'},
            pepsi: {color: 'blue'}
        },
        small: {
            my-cola: {color: 'purple'}
        }
    }
}

我尝试这样做:

wrapperObject = {};
innerObject = {};

for each object in myCompanyList {
    innerObject[object.size] = { object.name : {color: object.color}}

}

,但object [name]位将被覆盖。如何编写此代码,以便可以在每个对象/地图级别上动态获取名称?我是否需要制作另一个内部对象/地图来动态写入名称?

我曾尝试用Java编写此代码,但最终得到了5维地图,但它不起作用,所以我只是想知道是否缺少一些简单的东西-Java,JavaScript或伪代码表示感谢。

1 个答案:

答案 0 :(得分:7)

您可以使用Array.reduce()创建地图,请尝试以下操作:

location /r {
  proxy_pass http://172.17.0.2:3000;
  proxy_set_header   X-Forwarded-For $remote_addr;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection 'upgrade';
  proxy_set_header Host $host;
  proxy_cache_bypass $http_upgrade;
}
location /static/ {
  proxy_pass http://172.17.0.2:3000;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection 'upgrade';
  proxy_set_header Host $host;
  proxy_cache_bypass $http_upgrade;
}
location /sockjs-node/ {
  proxy_pass http://172.17.0.2:3000;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection 'upgrade';
  proxy_set_header Host $host;
  proxy_cache_bypass $http_upgrade;
}