有没有什么短方法可以将所有数组元素移动到对象的对象内。 对于前 我有一个像这样的数组
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完成?
答案 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; }