小程序修改数组_微信小程序修改数组索引setdata 数组索引 - CSDN
精华内容
参与话题
  • 官方文档是这样的: changeItemInArray: function() { // you can use this way to modify a danamic data path this.setData({ 'array[0].text':'changed data' }) }, changeItemInObject: function...

    官方文档是这样的:

    changeItemInArray: function() {
        // you can use this way to modify a danamic data path
        this.setData({
          'array[0].text':'changed data'
        })
      },
      changeItemInObject: function(){
        this.setData({
          'object.text': 'changed data'
        });
      },

    动态获取的索引值arr[index].name,写法如下:

    that.setData({
            ['arr[' + index + '].name']:"123"
    })

     

    展开全文
  • 微信小程序有自己的语法,修改数据我们必须要使用setData(),参数是一个key,value形式的对象。一下是我做的一个关于修改几种数据的小小记录: 1.修改单个值: page({ data:{ resultOpacity:true, }, change(e){ ...

    微信小程序有自己的语法,修改数据我们必须要使用setData(),参数是一个key,value形式的对象。一下是我做的一个关于修改几种数据的小小记录:
    1.修改单个值:

    page({
      data:{
        resultOpacity:true,
      },
      change(e){
        this.setData({
         resultOpacity: false,
        })
      }
    })
    

    2.修改整个数组:

    Page({
      data: {
        imgList:[
          {
            words:"这里放文字1",
            number:12555,//票数
            isSelect:false,//判断是否已经投票
          },
          { 
            words: "这里放文字2",
            number: 18458,//票数
            isSelect: false,//判断是否已经投票
          },
        ],
      },
    
      onLoad: function () {
         var that = this;
         let newimgList =[];
         newimgList.push({
             number:that.data.imgList[index].number
        })
          that.setData({
             imgList:newimgList
          })   
      },
      })
     
    
    

    3.修改数组中的变量:
    key值为变量的时候要用[ ]引起来。

    vote:function(e){
        var that = this;
        var index = e.currentTarget.dataset.id;//获取当前投票的下标
        var newData = 'imgList[' + index + '].number';
        var isSelect = 'imgList[' + index + '].isSelect';
        var selected = that.data.imgList[index].isSelect
        
        //判断如果没有投票才能投
        if (selected ==false){
          that.setData({
            //key值为变量的时候要用[ ]引起来
            [newData]: that.data.imgList[index].number + 1,
            [isSelect]: true
          })
          wx.showToast({
            title: '投票成功!',
            icon: 'none',
            duration: 1000
          })
        }else{
          wx.showToast({
            title: '你已经投过票了,不能再投',
            icon: 'none',
            duration: 1000
          })
        } 
      }
    

    4.修改数组中的某条数组:
    修改数组中的某条数据时,key值必须要带’’(单引)号。

    vote: function (e) {
        var that = this;
        var index = e.currentTarget.dataset.id;//获取当前投票的下标
        var newData = 'imgList[' + index + '].number';
       
        that.setData({
          'imgList[0].number': that.data.imgList[index].number+1
        })
       
      },
    

    在这里插入图片描述

    展开全文
  • 小程序添加新的功能遇到一个问题,需要点击CheckBox来修改某个数组里某一项的值。 因为我自己平时有时候会手机备忘录记一点,电脑便签记一点,所以打算给我的小程序【口袋趣屋】添加一个类似于todo的功能。。 ...

    给小程序添加新的功能遇到一个问题,需要点击CheckBox来修改某个数组里某一项的值。

    因为我自己平时有时候会手机备忘录记一点,电脑便签记一点,所以打算给我的小程序【口袋趣屋】添加一个类似于todo的功能。。

    动态修改数组

    大概类似这样的一个列表
    在这里插入图片描述

    右边是一个switch, checkbox类型。

    点击勾选之后,首先更新数据库,然后更新页面的data。

    数据的结构是这样的:
    在这里插入图片描述

    done为true 的时候就是选中,done 为false的时候表示没有完成。

          db.collection('user_todo_record').doc(id).update({
            data: {
              done: false
            },
            success: function (res) {
              console.log(res)
              let temp = 'content[' + index + '].done'   // 利用这个来表示,就能实现更改数组里的某一项的数据了
              that.setData({
                [temp]: false,
    	  // 直接在这个位置写content[index].done 的话,会提示错误,不能识别
              })
            }
          })
    

    wxs

    参考: 官方文档

    利用wx:for 渲染数组的时候,我想根据数组里的元素的id是否在另一个数组里来判断单选框是否处于选中状态。

    小程序页面的语法是不支持直接indexOf的,所以需要使用wxs。

    WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。WXS 与 JavaScript 是不同的语言,有自己的语法,并不和 JavaScript 一致。

    // array.wxs
    
    function defineIndexOf(str, val) {
      return str.indexOf(val);
    }
    module.exports = {
      indexOf: defineIndexOf
    }
    
    <wxs src="array.wxs" module="arrayTool" />
    
    <switch type="checkbox" value="{{item._id}}" checked="{{arrayTool.indexOf(today_info, item._id) > -1?true:''}}" bindchange="todoCom" data-id="{{item._id}}"/>
    

    我的个人博客链接

    展开全文
  • 微信小程序修改数据对数组的修改

    千次阅读 2018-08-23 09:36:25
    小程序修改数据 小程序中,其实没有双向数据绑定的 修改数据: setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。 直接修改 this.data 而不调用 this.setData 是...

    小程序修改数据及对数组的修改

    小程序中,其实没有双向数据绑定的

    修改数据:

    setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。
    直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
    单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

    使用setData(),参数是一个key,value形式的对象
    Page.prototype.setData();
    如果是在此页的.js文件中,可直接使用this

    this.setData({
       dataname :value
    })
    

    使用setData修改数组时需要注意
    不需要在this.data中预先定义,使用setData()方法会自动创建该数据
    1、修改数组

    data:{
        arrayTest:[
        {title:"1",val:"one"},
        {title:"2",val:"two"},
        {title:"3",val:"three"}]
    }
    opationArray(){
        var self = this;
        var obj = {title:"4",val:"four"}
        var arrayT = self.data.arrayTest;
        arrayT.push(obj);
        self.setData({arrayTest:arrayT});
    }

    2、修改数组中的某条数据

    this.setData({
        'list[0].title' = 'change data',   //数据路径key必须带'''list[0].num' = 'change data'      //数据路径key必须带''号
    })
    

    3、key值可以为变量,为变量的时候要用[ ]引起来

    page({
      data:{
        todos:[{id:0,text:'abc',isDelete:false}]
      },
      change(e){
        var index = e.currentTarget.dataset.id;
        var deletedtodo='todos['+index+'].idDelete';
        this.setData({
           [deletedtodo]:true
        })
      }
    })
    展开全文
  • 因为小程序不可以直接this.data设置,必须...小程序修改数组中内容做法如下 //临时取出数组洗净备用 var oldList = this.data.list; //这里的i是你遍历的index oldList[i].num = oldList[i].num+1; //替换数组 this...
  • 1、更改数组中的值设 paraList:[{txt:'123',chose:false},{txt:'1234',chose:false}]let choseChange = "paraList[" + index + "].chose" _this.setData({ [choseChange]: true, numList: ...
  • data:{ list:{ data1:{}, data2:[] } } 如果想在list里面的data中添加数据,创建一个变量来定义 var that=this, num="list.data1"; that.setData({ [num]:that.data.list.data1....核心要点:将...
  • 修改数组指定元素 //数组 data: { m_box: [{ title:'客户', }, { title: '协同', }, { title: '敏捷', }], }, //操作 var id = 1; var str_title = "m_box[" + id + "].title"; con...
  • 小程序 动态修改二维数组 示例

    千次阅读 2019-04-23 10:11:11
    个人的项目中,在进行用户地址的删除操作时,我需要动态隐藏已经删除掉的地址,毕竟小程序的 JS 跟我们前端接触的 JavaScript 代码有很大的不同 1.首先获取用户所有未删除的地址(根据字段 status 进行判断),规定...
  • 一、for循环的使用 ①for(let i = 0 ; i &lt; length ; ++i){ } 示例: for(let i=0;i&lt;length;++i){ console.log(temp[i]) } ②for(var x in temp){ } 示例: ... that.data....
  • 小程序改变数组的某一个值

    千次阅读 2019-05-22 09:42:11
    https://www.cnblogs.com/LChenglong/p/9016875.html
  • 1、更改数组中的值 paraList: [ {txt:'123',chose:false}, {txt:'1234',chose:false} ] let choseChange = "paraList[" + index + "].chose" this.setData({ [choseChange]: true, numList: numList }) 可以...
  • 微信小程序对数组的增删改查

    万次阅读 热门讨论 2018-01-03 16:54:37
    微信小程序 数组(增,删,改,查)等操作实例详解 作者: default|标签:微信小程序 数组 数组操作|2017-1-10 10:17 微信小程序 数组(增,删,改,查)等操作 首先这是原始数据,json的数组。 我们...
  • 现在有一个数组对象 array: [{ name:lzx, sex:nan },{ name:lq, sex:nan }] 现在不论这个数组对象是从后台加载过来的,还是说,原本的data中就存在的 现在想要为数组对象这种的每一个对象添加一个年龄 age...
  • 微信小程序 修改data里的数组数据

    千次阅读 2019-05-12 00:08:11
    小程序前端的时候发现的一个坑 不能直接this.setData({})里面不能用最直接的方法修改数组内的数据,必须把数组名转为字符串再用大括号[]包围,本人通过百度和自己实践发现有两种方式实现修改,下面附上代码. ...
  • 1、更改数组中的值 可以改变数组中某一个特定下标的值 //数组 paraList:[{txt:'123',chose:false},{txt:'1234',chose:false}] //细节 let choseChange = "paraList[" + index + "].chose" _...
  • 【微信小程序】二维数组列表渲染

    万次阅读 2016-09-30 00:06:10
    微信小程序官方文档主要是一维数组列表渲染的案例 也有一个“静态”的二维数组列表渲染案例
  • 开发微信小程序时,使用setData修改data中数据时,针对各种情况的解决方案如下: //示例data: data:{ code:'9527', baseInfo:{ name:'夏尔', age:19 }, family:[{ name:'大头爸爸', age:'46'...
  • 微信小程序数组里的某一项赋值

    千次阅读 2018-04-02 16:46:26
    修改数组或对象的时候就直接将要修改的参数名写成对应字符串就可以了,然后使用[]将字符串括起来 ,然后通过setData赋值就行了var b= 'a.b' that.setData({ [b]: c }) this.setData({ [printPrice]: e....
  • 微信小程序数组长度为0的坑

    千次阅读 2020-04-25 08:58:53
    前几天在写程序时,在js页面里用console.log打印出来的和在调试窗口看到的Appdata都显示我的result数组长度是20,但是在xml页面通过{{result.length}}显示出来却始终是0。找了很久bug,最终发现,是在js里修改result...
1 2 3 4 5 ... 20
收藏数 411,771
精华内容 164,708
关键字:

小程序修改数组