Lodash 在同一对象的关键部分下移动对象
Lodash move objects under a key part of same object
我有一个 JSON 对象
datas = [
{"id":1,"name":"Test","age":24},
{"id":2,"name":"Test1","age": 30}
]
我想像下面那样修改 JSON 对象
datas = [
{"1":{"name":"Test","age":24}},
{"2":{"name":"Test1","age": 30}}
]
我想用 lodash
做同样的事情。我可以理解 map
而不是 data
并创建一个新对象应该解决这个问题
updated_data=[]
_.map datas, (data) ->
Obj = {}
Obj[data.id] = data
updated_data.push(Obj)
但我正在寻找 lodash
实现相同目标的方法。
将Array.map()
(或_.map()
)用于解构和对象剩余(...
):
const datas = [{"id":1,"name":"Test","age":24}, {"id":2,"name":"Test1","age": 30}]
const result = datas.map(({ id, ...o }) => ({ [id]: o }))
console.log(result)
使用 lodash 你可以做同样的事情,但不是解构,而是使用 _.omit()
从原始对象中删除 id
,然后使用 _.zipObject()
将其与 id
:
const datas = [{"id":1,"name":"Test","age":24}, {"id":2,"name":"Test1","age": 30}]
const result = _.map(datas, o => _.zipObject([o.id], [ _.omit(o, 'id')]))
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
我认为您不需要为此使用额外的库。这样你就可以达到想要的效果:
datas.map((item) => {
const { id, ...rest } = item;
return {
id: rest,
};
});
我有一个 JSON 对象
datas = [
{"id":1,"name":"Test","age":24},
{"id":2,"name":"Test1","age": 30}
]
我想像下面那样修改 JSON 对象
datas = [
{"1":{"name":"Test","age":24}},
{"2":{"name":"Test1","age": 30}}
]
我想用 lodash
做同样的事情。我可以理解 map
而不是 data
并创建一个新对象应该解决这个问题
updated_data=[]
_.map datas, (data) ->
Obj = {}
Obj[data.id] = data
updated_data.push(Obj)
但我正在寻找 lodash
实现相同目标的方法。
将Array.map()
(或_.map()
)用于解构和对象剩余(...
):
const datas = [{"id":1,"name":"Test","age":24}, {"id":2,"name":"Test1","age": 30}]
const result = datas.map(({ id, ...o }) => ({ [id]: o }))
console.log(result)
使用 lodash 你可以做同样的事情,但不是解构,而是使用 _.omit()
从原始对象中删除 id
,然后使用 _.zipObject()
将其与 id
:
const datas = [{"id":1,"name":"Test","age":24}, {"id":2,"name":"Test1","age": 30}]
const result = _.map(datas, o => _.zipObject([o.id], [ _.omit(o, 'id')]))
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
我认为您不需要为此使用额外的库。这样你就可以达到想要的效果:
datas.map((item) => {
const { id, ...rest } = item;
return {
id: rest,
};
});