gpt4 book ai didi

javascript - 减少循环次数或代码可读性问题

转载 作者:行者123 更新时间:2023-12-02 23:15:53 25 4
gpt4 key购买 nike

代码按预期工作,但是有没有办法减少循环次数或提高此代码对 ES6/ES7 的可读性?正如你所看到的,我重复了 .split.join

的数量

它将把 Total.Subtotal": "10.50 转换为包含字段名称和更新字符串的数组。

  {
"Update": "+Total.+Subtotal = val:TotalSubtotal",
"Field": {
"+Total": "Total",
"+Subtotal": "Subtotal"
},
"Value": {
"val:TotalSubtotal": "10.50"
}
}

function createMap(val) {
const maps = [];

Object.keys(val).forEach(entry => {
const param = entry.split('.').join('');
const names = {};

for(const name of entry.split('.')) {
names[`+${name}`] = name;
}

const setName = Object.keys(names).join(".");

maps.push({
Update: `${setName} = val:${param}`,
Field: names,
Value: { [`val:${param}`]: val[entry] },
});
});

return maps;
}


console.log(
createMap({
"Total.Subtotal": "10.50"
})
)

最佳答案

一些想法:

  1. 将所有重复的逻辑提前移至函数中并重用,这意味着您只需计算一次。
  2. 尝试使用数组方法,如 mapreduce ,这将避免您编写奇怪的 for 循环等

function createMap(val) {
return Object.keys(val).map(entry => {
const splitValues = entry.split('.');
const param = splitValues.join('');
const names = splitValues.reduce((obj, currentValue) => {
return { ...obj, [`+${currentValue}`]: currentValue };
}, {});

const setName = Object.keys(names).join('.');

return {
Update: `${setName} = val:${param}`,
Field: names,
Value: { [`val:${param}`]: val[entry] }
};
});
}

console.log(
createMap({
'Total.Subtotal': '10.50'
})
);

关于javascript - 减少循环次数或代码可读性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57173204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com