WXML
<view> <checkbox-group bindchange="checkboxChange"> <label wx:for="{{items}}"> <view><checkbox value="{{item.name}}" checked="{{item.checked}}"/>{{item.value}}</view> </label> </checkbox-group> <view> <text wx:for="{{checkArr}}"> {{item}} </text> </view> </view>
JS
Page({ data: { items: [ { name: 'USA', value: '美国' }, { name: 'CHN', value: '中国', checked: 'true' }, { name: 'BRA', value: '巴西' }, { name: 'JPN', value: '日本' }, { name: 'ENG', value: '英国' }, { name: 'TUR', value: '法国' }, ], checkArr: ['中国'] }, checkboxChange: function (e) { var arr = []; e.detail.value.forEach(current => { for (var value of this.data.items){ if(current === value.name){ arr.push(value.value); break; } } }); this.setData({checkArr: arr}); } })
总结
由于e.detail.value和this.data.items都是数组元素进行属性对比查找,所以此处采用了双循环。
forEach循环不能在循环中跳出,所以在循环this.data.items时采用for…of…