js变量和字符串拼接之后,怎么还能是变量呢?

受别人指点,修改了问题,之前发错了问题又没有表达清楚,代码如下。冒号左边可以[result${i}AV]这样写,数字由索引获取,但是冒号右边的不知道怎么写,拼接之后就不是变量了。冒号左边的是page函数的data初始化数据里面的,冒号右边是let result1A = [1,2,3]这种写在onload函数里面的,需要把计算之后把值传给page函数的初始化数据data里面对应的数据,该末尾加了V(view)。目前很想知道怎么使用遍历写出更精简的代码,因为冒号右边不会拼接。

this.setData({
      labelAV: labelA,
      result1AV: result1A,
      result2AV: result2A,
      result3AV: result3A,
      result4AV: result4A,
      result5AV: result5A,
      result6AV: result6A,
      result7AV: result7A,
      result8AV: result8A,
      result9AV: result9A
    })
阅读 3.7k
3 个回答

问题描述有点乱,我理解你的问题大概是这个意思:
你需要写一段类似这样的代码:

this.setData({
  labelAV: labelA,
  result1AV: result1A,
  result2AV: result2A,
  result3AV: result3A,
  result4AV: result4A,
  result5AV: result5A,
  result6AV: result6A,
  result7AV: result7A,
  result8AV: result8A,
  result9AV: result9A
})

但是对象很长,并且键名和对应的变量名都有规律,所以想问问有什么简单的方法?

其实有办法的,但是我们一般不会这样写。
可以用eval来实现:

const codes = [ `labelAV: labelA` ];
for ( let i = 0; i < 10; i++ ) {
    codes.push( `result${i}AV: result${i}A` );
}
eval( `this.setData( { ${codes.join( ',' )} } )` );

但是建议不要这样写代码,也不要定义一堆resultxA之类的变量,你可以用一个数组来保存它们,这样就会好处理很多

for(i=1;i<10;i++)
  resultA.push(this.data['result'+i+'AV'])
let resultA = Array(10).fill(0).map((_, i) => this.data[`result${i}AV`])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题