You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将函数返回值作为键值对添加到数组中的每个对象

解决方案

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:05:34