segmentfault.com/q/:遍历修改data的值
zhuanlancom/p/:foreach遍历

foreach

  1. //forEachES5中操作数组的一种方法,主要功能是遍历数组;forEach有三个参数;
  2. [].forEach(function(value,index,arrSelf){
  3. //value代表数组中的每一项;index代表数组中每一项的索引;arrSelf 代表数组本身;
  4. })
  5. var arr = [2,5,4,9];
  6. var sum = 0;
  7. arr.forEach(function(value,index,arrSelf){
  8. arrSelf[index] = value;
  9. sum+=value;
  10. });
  11. console.log(sum);
  1. data: {
  2. personData:[100,200,300,400,500,600]
  3. },
  4. onLoad: function(options) {
  5. this.Limit()
  6. },
  7. limit(){
  8. var _this=this;
  9. this.data.personData.forEach(item=>{
  10. if (item>400) {
  11. 对大于400的项进行处理
  12. }
  13. })
  14. }

上面的forEach中要对大于400的项进行修改,微信小程序里需要调用this.setData(),但是拿到的是全局的内容,如何像js中一样使用this修改呢?

可以先用一个变量保存处理后的值,全部重新处理完再重新赋值setData。

  1. limit(){
  2. var _this=this;
  3. var temp = []
  4. this.data.personData.forEach(item=>{
  5. if (item>400) {
  6. temp.push(item) //对大于400的项进行处理,处理后再setData
  7. }
  8. })
  9. this.setData({personData:temp})
  10. }
  1. this.setData({
  2. ["personData.0"]: "设置角标为0的内容"
  3. })

forEach、$.each、map的区别