dart - 数组方法

116 阅读2分钟

常用属性

  • length: 获取数组长度
  • reversed: 数组反转
  • isEmpty: 是否为空
  • isNoEmpty: 是否不为空

常用方法

  • add: 增加
  • addAll: 拼接数组
  • indexOf: 传入具体值, 查找到返回索引值, 没有返回-1
  • remove: 删除, 传入具体值, 返回值为修改后的数组, 原数组改变
  • removeAt: 删除, 传入索引值, 返回值为修改后的数组, 原数组不变
  • fillRange(start, end, val): 修改, 返回值为修改后的值, start-开始的索引,end-结束的索引, val-修改的值, 从start开始修改, 一直到end, 不包含end项
  • insert(index, val): 指定位置插入值
  • insertAll(index, list): 指定位置插入list
  • join(): list转成字符串, 可以自定义分隔符
  • split(): 字符串转成list, 参数为指定的分隔符
void main() {
  List l1 = <String>['1', '发给我'];
  var findItem = l1.indexOf('发给我');
  print(findItem); // 1
  List l2 = [1, 2, 3, 4, 5];
  l2.removeAt(1);
  print(l2); // [1, 3, 4, 5]
  List l3 = [1, 2, 3, 4, 5];
  l3.remove(1);
  print(l3); // [2, 3, 4, 5]
  List l4 = [7, 6, 5, 4, 3];
  l4.fillRange(1, 3, 'a'); //从下标1开始到下标3结束不包含三
  print(l4); // [7, a, a, 4, 3]
  l4.insertAll(0, [8, 9]);
  print(l4); // [8, 9, 7, a, a, 4, 3]
  var filter = l2.where((element) {
    return element > 1;
  });
  print(filter); // (3, 4, 5)
  var anyF = l2.any((element) {
    return element > 1;
  });
  print(anyF); // true
  var anye = l2.every((element) {
    return element > 1;
  });
  print(anye); // false
  List nummArr = [];
  print(nummArr.isEmpty); // true
  print(nummArr.isNotEmpty); // false
  // 修改数组
  List changeArr = [1, 2, 3, 4, 5];
  changeArr.fillRange(1, 3, 'a');
  print(changeArr); // [1, a, a, 4, 5]
  String str1 = 'be_345r2_bh42_2';
  List strArr = str1.split('_');
  print(strArr); // [be, 345r2, bh42, 2]
  String str2 = strArr.join(',');
  print(str2); // be,345r2,bh42,2
}

list的循环

  • forEach: 同js
  • map: 同js
  • where: 满足条件返回信的集合, 类似js中的filter, 不改变原数组
  • any: 输入内有一个满足条件的就返回true
  • every: 判断数组中的数据是否都满足条件
void main() {
  // where: 过滤满足条件的集合
  List instList = <int>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  var filterList = instList.where((element) {
    return element ~/ 2 > 1; // 除二取整大于1
  });
  print(filterList); // 4, 5, 6, 7, 8, 9, 10
  // any 检测数组中是否有一项是否满足条件
  var anyList = instList.any((element) {
    return element > 10;
  });
  print(anyList); // false
  // every 检测数组中所有数据是否满足条件
  var everyList = instList.every((element) {
    return element ~/ 2 < 8;
  });
  print(everyList); // true
}