微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将带有嵌套数组的对象转换为大对象

如何解决将带有嵌套数组的对象转换为大对象

我需要一些帮助来正确准备我的对象以更新我的数据库

我从 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 举报,一经查实,本站将立刻删除。