微信小程序中this.seData多种方法动态修改对象,数组中的值
在微信小程序的前端开发中,我们经常碰到这样的问题,无论是在微信小程序还是React中,我们需要根据某个条件去修改某个数据
假设原数据为:
data: {
student:{
name: 'xiaoming',
age: 10
},
eat:['apple', 'banner', 'origin']
},
如何才能修改到对象或数组中的值呢?
这是错误的方法,在小程序中,参数名会被当做字符串解析.
this.setData({
student.name: "xiaoli",
eat[0]: "pear"
})
- 方式一: 使用[‘字符串’],例如
this.setData({
['student.name']: "xiaoli",
['eat[0]']: "pear"
})
<!-- 如果我们需要动态地去修改eat数组中的值呢, 那可以使用es6中新增的模板字符串方法 -->
let index = 0
this.setData({
[`eat[${index}`]: "pear",
})
- 方式二: 直接使用字符串,和第一种方法很像
this.setData({
'student.name': "xiaoli",
'eat[0]': "pear"
})
- 方式三: 构造变量,重新赋值,例如:
var temp = this.data.user
var temp2 = this.data.eat
temp.name = "xiaoli"
temp2[0] = "pear"
this.setData({
user: temp,
eat: temp2
})