微信小程序 数组动态添加方式

本文介绍了一种在小程序中有效更新数据的方法,包括如何正确地覆盖原有数据和在原有数据基础上进行叠加更新。通过不同的实现方式,如直接设置数据、使用setData方法等,展示了最佳实践和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【默认初始状态】

Page({
  data: {
    temparr:[
      {
        text:'标题一'
      },
      {
        text: '标题二'
      }
    ]
  },
  onLoad:function(){

  }
})
<view>
  <text>这个会覆盖原有的数据</text>
</view>
<view wx:for="{{temparr}}" wx:for-item="item" wx:for-index="index">
  <text>序号:{{index+1}},</text>
  <text>文本:{{item.text}}</text>
</view>

【如下方式赋值无效】

    var that=this;
    var datalist =[
      {
        text:'标题三'
      },
      {
        text: '标题四'
      },
      {
        text: '标题五'
      }
    ];

    that.data.temparr = datalist;

【覆盖原有数据的方式一】

Page({
  data: {
    temparr:[
      {
        text:'标题一'
      },
      {
        text: '标题二'
      }
    ]
  },
  onLoad:function(){

    var that=this;
    var datalist =[
      {
        text:'标题三'
      },
      {
        text: '标题四'
      },
      {
        text: '标题五'
      }
    ];

    //覆盖之前的数据 - 写法一
    const _temparr = {};
    datalist.forEach(function (item, index) {
      _temparr[`temparr[${index}].text`] = item.text
    });
    that.setData(_temparr);
  }
})
<view>
  <text>这个会覆盖原有的数据</text>
</view>
<view wx:for="{{temparr}}" wx:for-item="item" wx:for-index="index">
  <text>序号:{{index+1}},</text>
  <text>文本:{{item.text}}</text>
</view>

【覆盖原有数据方式二】

Page({
  data: {
    temparr:[
      {
        text:'标题一'
      },
      {
        text: '标题二'
      }
    ]
  },
  onLoad:function(){

    var that=this;
    var datalist =[
      {
        text:'标题三',
        name:'a'
      },
      {
        text: '标题四',
        name: 'b'
      },
      {
        text: '标题五',
        name: 'c'
      }
    ];

    that.setData({
      temparr: datalist
    });
  }
})
<view>
  <text>这个会覆盖原有的数据</text>
</view>
<view wx:for="{{temparr}}" wx:for-item="item" wx:for-index="index">
  <text>序号:{{index+1}},</text>
  <text>文本:{{item.text}}</text>
</view>

【原有数据上叠加】

Page({
  data: {
    temparr:[
      {
        text:'标题一'
      },
      {
        text: '标题二'
      }
    ]
  },
  onLoad:function(){

    var that=this;
    var datalist =[
      {
        text:'标题三',
        name:'a'
      },
      {
        text: '标题四',
        name: 'b'
      },
      {
        text: '标题五',
        name: 'c'
      }
    ];

    //叠加数据
    const length=that.data.temparr.length;
    datalist.forEach(function (item, index) {
      that.data.temparr.push({ text: item.text });
    });
    that.setData({
      temparr: that.data.temparr
    });
  }
})
<!--index.wxml-->
<view>
  <text>原有的数据上叠加</text>
</view>
<view wx:for="{{temparr}}" wx:for-item="item" wx:for-index="index">
  <text>序号:{{index+1}},</text>
  <text>文本:{{item.text}}</text>
</view>

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值