如何将函数返回值作为键值对添加到数组中的每个对象
解决方案
1. 重构计算函数
先把你的计算逻辑改成可复用的独立函数,让它们接收单个数据对象作为参数,就能对数组里的每个对象调用:
// 计算当日涨跌状态 function getEndUpDown(day) { // 注意:原数据中的数值是字符串,必须转为数字再比较,避免字符排序导致的错误 const end = Number(day.End); const prevEnd = Number(day.PreviousEnd); const nextEnd = Number(day.NextEnd); if (end > prevEnd && end > nextEnd) { return "Positive 1 Day"; } else if (end > prevEnd && end < nextEnd) { return "Positive 2 Day"; } else { return "Negative"; } } // 计算次日涨跌状态 function getNextDayStatus(day) { const end = Number(day.End); const nextEnd = Number(day.NextEnd); return end < nextEnd ? "Next Day Up" : "Next Day Down"; }
2. 批量处理数组
使用数组的map方法遍历原数组,给每个对象添加Status字段。map会返回一个新数组,不会修改原数据(如果需要直接修改原数组,可以用forEach,但推荐这种无副作用的写法):
const myData = [ // 你的原始7200个对象的数组 ]; // 生成目标数组 const myData2 = myData.map(day => { // 复制原对象所有属性,再添加新的Status字段 return { ...day, Status: [getEndUpDown(day), getNextDayStatus(day)] }; });
关键说明
- 字符串转数字:原数据里的
End、PreviousEnd、NextEnd都是字符串类型,直接用>或<比较会按字符顺序判断(比如"100"会被认为小于"90"),所以必须先转为数字再比较。 map方法的优势:map专门用于数组元素的转换,代码简洁可读性高,处理7200个对象完全没有性能压力。- 函数复用性:重构后的函数可以单独测试,也能在其他场景重复使用,比原来依赖外部变量的写法更灵活。
运行上述代码后,myData2就会变成你期望的目标数组,每个对象都包含Status字段。
内容的提问来源于stack exchange,提问作者pl9nt
相关产品推荐
相关产品推荐

