如何解决将带有嵌套数组的对象转换为大对象
我需要一些帮助来正确准备我的对象以更新我的数据库
我从 API 中得到了什么:
{
currency: 'USD',product_id: '1',user_id: '123',service_id: '999',tech: 'javaScript',price: '50',details: [
{ detail_type: 'hours_service',value: '5' },{ detail_type: 'workers',value: '2' },{ detail_type: 'machines',{ detail_type: 'instances',value: '1' },{ detail_type: 'difficulty',],date_start: '2021-06-20',date_stop: '2021-06-21',}
我需要更新我的数据库:
{
currency: 'USD',hours_service: '5',workers: '2',machines: '2',instances: '1',difficulty: '2',}
我的尝试:
const api_data = {
currency: 'USD',}
for (let item of api_data.details) {
var arr = item
var result = {};
for (var i = 0,len = arr.length; i < len; i++) {
result[arr[i].key] = arr[i].value;
}
console.log(result);
}
我所做的尝试给了我很多空对象...
如何使键值对中的第一个对象 detail
数组转换并使其成为一个包含所有数据的大对象?
提前致谢, 亲切的问候
解决方法
你可以使用reduce来实现这一点
const apiData = {
currency: 'USD',product_id: '1',user_id: '123',service_id: '999',tech: 'javaScript',price: '50',details: [
{ detail_type: 'hours_service',value: '5' },{ detail_type: 'workers',value: '2' },{ detail_type: 'machines',{ detail_type: 'instances',value: '1' },{ detail_type: 'difficulty',],date_start: '2021-06-20',date_stop: '2021-06-21',};
const {details,...rest} = apiData;
const transformedObj = details.reduce((result,item)=>({...result,[item.detail_type]:item.value}),{});
const result = {...rest,...transformedObj};
console.log(result);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。