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;
}, {});
}