Javascript将所有数组元素移到对象的对象中

时间:2019-02-11 14:24:23

标签: javascript arrays

有没有什么短方法可以将所有数组元素移动到对象的对象内。 对于前 我有一个像这样的数组

var a =  [
   {
     'a': 'a',
     'test' : 'test'
   },
   {
      'b' : 'b',
      'test' : 'test'
   }
]

我想在对象内部移动此数组元素,使其看起来像:

var a = {
"test" : {
    0: {
        'a' : 'a',
       'test' : 'test'
    },
    1: {
        'b' : 'b',
        'test' : 'test'
    }
}

};

里面的

“ test”不应该是数组,因为我正在使用此数据创建XML。如何使用javascript完成?

3 个答案:

答案 0 :(得分:5)

您可以将数组分配给对象。这样会将索引保留为键并返回一个对象。

var a =  [{ a: 'a', test: 'test' }, { b: 'b', test: 'test' }],
    result = { test: Object.assign({}, a) };

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:1)

您可以使用reduce

const a =  [
  { 'a': 'a', 'test' : 'test' },
  { 'b' : 'b', 'test' : 'test' }
];

const output = {
  test: a.reduce((acc, x, i) => {
    acc[i] = x;
    return acc;
  }, {})
};

console.log(output);

答案 2 :(得分:1)

您可以将数组简化为带有根属性的对象。

var a = [{
  'a': 'a',
  'test': 'test'
}, {
  'b': 'b',
  'test': 'test'
}];

console.log(wrap(a, 'test'));

function wrap(arr, root) {
  return {
    [root]: arr.reduce((obj, item, index) => {
      return Object.assign(obj, { [index]: item })
    }, {})
  }
}
.as-console-wrapper { top: 0; max-height: 100% !important; }