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

JS使用concat拼接属性名作函数参数无法生效问题

问题背景

需要动态拼接取值逻辑传入绘图组件的Y轴属性,字符串拼接后控制台打印结果符合预期,但传入组件后功能失效。目标是精简当前冗长的switch分支代码。

  • 可正常运行的硬编码写法:
switch (statement) {
  //CashFlow
  case 'changeInOperatingLiabilities':
    return (        
      <Fragment>
        <Plot 
          data={[{
            type: 'bar', 
            x: financialItem.fiscalDateEndingValues, 
            y: financialItem.changeInOperatingLiabilitiesValues
          }]}
          layout={{width: 900, height: 640, title: financialItemName}} 
          options ={{displaylogo: 'false'}}
        />
      </Fragment>
    );
}
  • 无法正常运行的拼接写法:
switch (statement) {
  //CashFlow
  case 'changeInOperatingLiabilities':
    return (        
      <Fragment>
        <Plot 
          data={[{
            type: 'bar', 
            x: financialItem.fiscalDateEndingValues, 
            y:''.concat('financialItem.',statement,'Values')
          }]}
          layout={{width: 900, height: 640, title: financialItemName}} 
          options ={{displaylogo: 'false'}}
        />
      </Fragment>
    );
}

执行console.log(''.concat('financialItem.',statement,'Values'))输出结果为financialItem.changeInOperatingLiabilitiesValues,和预期文本一致。

问题原因

字符串拼接得到的只是属性路径的文本内容,不是financialItem对象对应属性的实际值。相当于给y参数传了一段纯字符串,而非绘图需要的数组数据,组件自然无法正常渲染。

修复方案

不需要拼接字符串路径,直接使用JS方括号动态属性语法读取对象对应属性即可,还可以直接删掉冗余的switch分支:

return (        
  <Fragment>
    <Plot 
      data={[{
        type: 'bar', 
        x: financialItem.fiscalDateEndingValues, 
        // 动态取financialItem下 `${statement}Values` 对应的属性值
        y: financialItem[`${statement}Values`]
      }]}
      layout={{width: 900, height: 640, title: financialItemName}} 
      options={{displaylogo: 'false'}}
    />
  </Fragment>
);

当statement值为changeInOperatingLiabilities时,financialItem[${statement}Values]和硬编码写法financialItem.changeInOperatingLiabilitiesValues的取值完全一致,直接返回Y轴需要的真实数据,没有额外的字符串转换逻辑。后续新增同规则的报表项不需要额外写分支判断,代码精简度符合预期。

内容的提问来源于stack exchange,提问作者MrPie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:33:18