使用 lodash 将对象转换为 javascript 数组
Transform javascript array with objects with lodash
我想知道用对象转换我的 javascript 数组的最佳方法是什么。我试过用 lodash 制作一个花哨的链,但我想不通。
由于后端的工作方式,我需要以这种方式格式化数据。
// from:
var something = [
{
name: 'foo',
stuff: [
{
id: 1
},
{
id: 2
},
{
id: 3
}
]
},
{
name: 'bar',
stuff: []
},
{
name: 'baz',
stuff: [
{
id: 7
},
{
id: 8
}
]
}
];
// to:
var transformed = [
{
name: 'foo',
included: {
included: [1, 2, 3]
}
},
{
name: 'bar',
included: {
included: []
}
},
{
name: 'baz',
included: {
included: [7, 8]
}
}
];
你可以通过两个 map
调用(内置数组或 lodash 的映射)非常简洁地完成此操作,一个嵌套来处理每个对象中的 "included"
数组:
const transformed = something.map(it => {
return {
name: it.name,
included: {
included: it.stuff.map(thing => thing.id)
}
};
});
无需lodash
,只需使用Array.prototype.map
function:
// Sorry no fancy ES6 => here :S
var res = something.map(function(item) {
item.included = {included : item.stuff.map(function(i) {return i.id})}
delete(item.stuff)
return item
})
根据 @ssube 的评论:
var res = something.map(function(item) {
return {
included : {included : item.stuff.map(function(i) {return i.id})},
name: item.name
}
})
我想知道用对象转换我的 javascript 数组的最佳方法是什么。我试过用 lodash 制作一个花哨的链,但我想不通。
由于后端的工作方式,我需要以这种方式格式化数据。
// from:
var something = [
{
name: 'foo',
stuff: [
{
id: 1
},
{
id: 2
},
{
id: 3
}
]
},
{
name: 'bar',
stuff: []
},
{
name: 'baz',
stuff: [
{
id: 7
},
{
id: 8
}
]
}
];
// to:
var transformed = [
{
name: 'foo',
included: {
included: [1, 2, 3]
}
},
{
name: 'bar',
included: {
included: []
}
},
{
name: 'baz',
included: {
included: [7, 8]
}
}
];
你可以通过两个 map
调用(内置数组或 lodash 的映射)非常简洁地完成此操作,一个嵌套来处理每个对象中的 "included"
数组:
const transformed = something.map(it => {
return {
name: it.name,
included: {
included: it.stuff.map(thing => thing.id)
}
};
});
无需lodash
,只需使用Array.prototype.map
function:
// Sorry no fancy ES6 => here :S
var res = something.map(function(item) {
item.included = {included : item.stuff.map(function(i) {return i.id})}
delete(item.stuff)
return item
})
根据 @ssube 的评论:
var res = something.map(function(item) {
return {
included : {included : item.stuff.map(function(i) {return i.id})},
name: item.name
}
})