使用子属性创建新的多维对象

时间:2018-11-20 13:19:10

标签: javascript arrays object multidimensional-array

我从API对象接收以下格式的数据:

{
    id: 1,
    first_name: 'Foo',
    last_name: 'Bar',
    birthdate: '1990-07-01',
    birthplace: 'New York'
},
{
    id: 2,
    first_name: 'Mary',
    last_name: 'Lou',
    birthdate: '1984-12-15',
    birthplace: 'Los Angeles'
}

现在,我想将此对象重新排列为多维对象(对象数组将是正确的终点吗?):

{
    'New York': {
        id: 1,
        first_name: 'Foo',
        last_name: 'Bar',
        birthdate: '1990-07-01',
        birthplace: 'New York'
    },
    'Los Angeles': {
        id: 2,
        first_name: 'Mary',
        last_name: 'Lou',
        birthdate: '1984-12-15',
        birthplace: 'Los Angeles'
    }
}

是否有适当的方法来做到这一点?来自PHP世界,并不十分了解如何管理。

尝试过一些事情,这就是我的初衷,但只是找回一个空对象(第一步,挂起,使用birthplace作为属性创建多维对象,因为我不能使用“ push”功能(我只是不知道为什么)。

var myList = [
  {
    id: 1,
    first_name: 'Foo',
    last_name: 'Bar',
    birthdate: '1990-07-01',
    birthplace: 'New York'
  },
  {
    id: 2,
    first_name: 'Mary',
    last_name: 'Lou',
    birthdate: '1984-12-15',
    birthplace: 'Los Angeles'
  }
];

function rearrange(object) {
  var newObj = {};
  for(var obj in object) {
    if(newObj.hasOwnProperty(obj.birthplace)) {
      newObj.push(obj.birthplace)
    }

    newObj[obj.birthplace].push(obj);
  }

  return newObj;
}

console.log(rearrange(myList)); // returns: Cannot read proerty 'push' of undefined

0 个答案:

没有答案