为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁华开满天机 2019-03-12 17:15:05
受别人指点,修改了问题,之前发错了问题又没有表达清楚,代码如下。冒号左边可以[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 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

问题描述有点乱,我理解你的问题大概是这个意思:

你需要写一段类似这样的代码:


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之类的变量,你可以用一个数组来保存它们,这样就会好处理很多


查看完整回答
反对 回复 2019-03-26
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

let resultA = Array(10).fill(0).map((_, i) => this.data[`result${i}AV`])

查看完整回答
反对 回复 2019-03-26
  • 3 回答
  • 0 关注
  • 1210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信