如何用setData修改数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用setData修改数组相关的知识,希望对你有一定的参考价值。

在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值。这些值在微信小程序中都需要使用一个名为setData的方法,而这个方法是通过键值对的形式对数据进行修改,setData( 参数名: 值 );
既然知道是以键值对的方式进行传参,那么我们在修改数组和对象的时候就直接将要修改的参数名写成对应字符串就可以了,然后使用[]将字符串括起来,这就告诉编译器这是指向的是该字符对应的实际位置,如下:

var authority = 'buttonGroup.authority'
that.setData(
[authority]: parseInt(level)
)

var printPrice = "item["+i+"].print_price";
this.setData(
[printPrice]: e.detail.value
);
参考技术A var authority = 'buttonGroup.authority'
that.setData(
[authority]: parseInt(level)
)

var printPrice = "item["+i+"].print_price";
this.setData(
[printPrice]: e.detail.value
);

如何用空对象填充字符串数组?

【中文标题】如何用空对象填充字符串数组?【英文标题】:How do I fill a string array with empty objects? 【发布时间】:2013-12-19 00:16:03 【问题描述】:

所以我创建了一个包含 cd 集合的数组。唯一的问题是最大数组大小为 50,如果有 50 个对象,如何用空对象填充数组?:

public static void main(String[] args) throws IOException 
  
    final int MAX_ARRAY_SIZE = 50;
    final String FILENAME = "Collection.txt";

    CDOutput out = new CDOutput();
    CDInput in = new CDInput();

    int count = 0;  // Counter to keep track of number of elements in the array
    int choice = 0; // Menu choice

    String[] songArray = new String[MAX_ARRAY_SIZE]; // Create array to hold song collection

    
    songArray[0] = new String("");// Fill array with empty objects ????????
    songArray[1] = new String("");
    songArray[2] = new String("");
    songArray[3] = new String("");
    songArray[4] = new String("");
    songArray[5] = new String("");
    songArray[6] = new String("");
    songArray[6] = new String("");
    songArray[7] = new String("");
    songArray[8] = new String("");
    songArray[9] = new String("");
    songArray[10] = new String("");
    songArray[11] = new String("");
    songArray[12] = new String("");
    songArray[13] = new String("");
    songArray[14] = new String("");
    songArray[15] = new String("");
    songArray[16] = new String("");
    songArray[17] = new String("");
    songArray[18] = new String(""); //and so on......
    

我知道这不可能是正确的......

编辑(事后看来这确实很容易):

String[] songArray = new String[50];
for (int i = 0; i < 50; i++)
    songArray[i] = new String("");

【问题讨论】:

继续做同样的事情 50 次。 真的吗?有没有更高效的? @SotiriosDelimanolis 为什么要创建动态数组??这样会更有效率 @KamleshArya 你能解释更多吗? 使用循环。见tutorialspoint.com/java/java_loop_control.htm 【参考方案1】:

Arrays.fill() 或许可以帮到你:http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

另外,如果你使用的是 Apache Commons Lang,你可以使用ArrayUtils.nulltoEmpty()

【讨论】:

【参考方案2】:

使用Arrays#fill。更多详情,请查看Javadoc。一个典型的用法如下:

String[] a = new String[5];
String stringToFillWith = "";
Arrays.fill(a, 0, a.length - 1, stringToFillWith);

编辑:两个数字 0 和 a.length - 1 是用给定值填充的初始和最终索引(在本例中为 stringToFillWith)。

【讨论】:

【参考方案3】:

在 Java 中,无论何时初始化一个数组,该数组都会有一些默认值“填满”所有新形成的数组。对于数值,它们为零,null 对于存储对象的数组:

boolean[]: false char[]: '\u0000' byte[], short[], int[], , long[] : 0 double[]float[]。 :0.0 String[]Object[] 等:null

如果您希望 songArray 在添加“CD”之前仅以 null 值开头,则无需进一步工作。如果您希望 songArray 以所有 "" 值开头,请使用 Arrays.fill

import java.util.Arrays;
....
String[] songArray = new String[MAX_ARRAY_SIZE];
Arrays.fill(songArray, "");

请注意,您也可以使用 for 循环轻松地手动执行此操作,而不是复制和粘贴一行代码 50 次:

for (int i = 0; i < MAX_ARRAY_SIZE; i++)

    songArray[i] = "";

【讨论】:

感谢您的回答。这显然是针对一堂课的,我们还没有学习过 Arrays.fill,所以我使用了 for 循环,这是我们在课堂上实际学习过的内容(当然,我不在的课程)。但我会记住 Arrays.fill!

以上是关于如何用setData修改数组的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序setData复杂数组的更新删除添加拼接

微信小程序用setData修改数组或对象中的一个属性值

小程序:this.data 与 this.setData()

微信小程序用 setData 方法修改 data 中对象数组某一项的属性值

微信小程序setData()方法的详解以及对数组/json操作

小程序 setData 的详解