Javascript 将对象数组减少为对象中的对象

Javascript 将对象数组减少为对象中的对象,javascript,Javascript,我想将对象数组转换为对象对象的对象 我的数据: var pools = [{ dce: 3, lts: 2, name: "nift nation", }, { dce: 1049.99, lts: 104.999, name: "NSG I.NS. Mark Select", }, { dce: 162, lts: 36.157, name: "Shift-Team Mark Select", } ]

我想将对象数组转换为对象对象的对象

我的数据:

var pools = [{
    dce: 3,
    lts: 2,
    name: "nift nation",
  },
  {
    dce: 1049.99,
    lts: 104.999,
    name: "NSG I.NS. Mark Select",
  },
  {
    dce: 162,
    lts: 36.157,
    name: "Shift-Team Mark Select",
  }
]
期望输出:

{
  nift_nation: {
    nift_nationDollars: "",
    nift_nationUnits: "",
    nift_nationPercentage: ""
  },
  NSG_I$NS$_Mark_Select: {
    NSG_I$NS$_Mark_SelectDollars: "",
    NSG_I$NS$_Mark_SelectUnits: "",
    NSG_I$NS$_Mark_SelectPercentage: ""
  },
  Shift__Team_Mark_Select: {
    Shift__Team_Mark_SelectDollars: "",
    Shift__Team_Mark_SelectUnits: "",
    Shift__Team_Mark_SelectPercentage: ""
  }
}
变量池=[{ dce:3, lts:2, 名称:nift国家, }, { dce:1049.99, lts:104.999, 名称:NSG I.N.标记选择, }, { dce:162, lts:36.157, 名称:班组标记选择, } ] var后缀数组=[美元,百分比,单位]; var getFieldSuffix=functionrowFieldCount{ 开关行字段计数{ 案例0: 返回“美元”; 案例1: 返回“单位”; 案例2: 返回“百分比”; 违约: 回来 } }; var replacementMap={ 单_空间:'', 点:“$”, 连字符:'''''', }; var replacer=functionstr{ 返回str.replace/[.-]/g,l=>{ 如果l==.return replacementMap[dot]; 如果l==返回replacementMap[单_空间]; 返回替换映射[连字符]; }; }; var formStructure=函数dataFormattercollection,后缀{ const data=collection.mappool=>Object.assign{ [replacerpool.name]:后缀arr.reduceac,后缀,索引=>{ acc[replacerpool.name+GetFieldSuffixinIndex%3]=; 返回acc; }, {}, }; return Object.assign{},…data;//额外的步骤,我认为这不是最好的方法 } var arrObj=formStructurepools,后缀数组;
console.logarrObj您可以使用与已在suffixArr上为您的集合使用的完全相同的reduce方法:


希望能够获取变量数据本身中对象的对象。。。但是为什么呢?片刻之后,函数结束,该变量被丢弃。你希望达到什么目标?我看不出它将如何为您当前拥有的代码增加任何价值。当然,重要的是formStructure函数返回所需的结果,以便在其他地方使用。它已经做到了。我看不出你提议的更改的目的。请同时添加想要的结果。@NinaScholz编辑了问题并添加了想要的结果result@ADyson如果有大量数据,比如说数百万,那么额外的步骤会不会影响性能?@HarshvardhanSharma,我不知道。为什么不试试呢?检测性能影响的最佳方法是测试。这通常很难预测。代码的其他部分可能会执行得更差。你为什么特别担心这一步?除非你有证据?当然,我并不是说这是不可能的——事实上,答案已经出现了。这似乎只是一个随机关注点。
function formStructure(collection, suffixArr) {
  return collection.reduce(acc, pool) => {
    acc[replacer(pool.name)] = suffixArr.reduce((acc, suffix, index) => {
      acc[replacer(pool.name) + getFieldSuffix(index % 3)] = '';
      return acc;
    }, {});
    return acc;
  }, {});
}