1数组常见的处理属性和方法
List list=['a','b','c'];
// 常用属性
print(list.length);// 3 长度
print(list.reversed);// 翻转 (c, b, a)
print(list.reversed.toList());// [c, b, a]
print(list.isEmpty);// false 是否为空
print(list.isNotEmpty);// true 是否不为空
// 常用方法
list.add('d');// 添加
print(list);// [a, b, c, d]
list.addAll(['f','g']);// 拼接数组
print(list);// [a, b, c, d, f, g]
print(list.indexOf('h'));// -1 // 传入值
print(list.indexOf('d'));// 3 查找下标从0开始,找到返回元素下标,找不到返回-1
list.remove('g');// 删除 传入值
print(list);// [a, b, c, d, f]
list.removeAt(0);// 删除 传入索引值
print(list);// [b, c, d, f]
list.fillRange(1,2,'k');// 修改 1 起始位置 2 结束为止 3 修改的值
print(list);
list.insert(1,'b');// 插入
print(list);
list.insertAll(1,['z','c']);// 插入多个
print(list);
var str = list.join('-');// 以‘-’拼接数组元素为字符串
print(str);
print(str is String);
list = str.split('-');// 以'-'分隔字符串为数组
print(list);
2.进阶内容
List<Map> students = [
{ 'name': 'tom', 'age': 16 },
{ 'name': 'jack', 'age': 18 },
{ 'name': 'lucy', 'age': 20 }
];
List numbers = [2, 8, 5, 1, 7, 3];
forEach()
可以遍历一个数组或者是一个map
students.forEach((student) => print(student));
// {name: tom, age: 16}
// {name: jack, age: 18}
// {name: lucy, age: 20}
Map tom = { 'name': 'tom', 'age': 16 };
tom.forEach((key, value) => print(key + ' - ' + value.toString()));
// name - tom
// age - 16
Map()
可以用来操作已知数组里的每一项,然后返回一个新数组
var messages = students.map((student) => 'Hello ' + student['name']).toList();
print(messages);
// [Hello tom, Hello jack, Hello lucy]
sort()
用于排序,接收一个函数当做参数
numbers.sort((num1, num2) => num1 - num2);
print(numbers);
// [1, 2, 3, 5, 7, 8]
contains()
用于判断数组是否包含某个元素
print(students.contains(5));
// true
reduce(), fold()
reduce()
将数组中的每一个值与前面返回的值相加,最后返回相加的总和fold()
用法跟reduce()
基本一样,只不过是可以提供一个初始值
var sum = numbers.reduce((curr, next) => curr + next);
print(sum);
// 26
var sum2 = numbers.fold(10, (curr, next) => curr + next);
print(sum2);
// 36
every()
用于判断数组中的每一项是否均达到了某个条件
var isAgeOver20 = students.every((student) => student["age"] > 20);
print(isAgeOver20);
// false
var isAgeOver15 = students.every((student) => student["age"] > 15);
print(isAgeOver15);
// true
where(), firstWhere(), singleWhere()
where()
返回数组中满足给定条件的元素集合firstWhere()
返回数组中满足给定条件的第一个元素singleWhere()
返回数组中满足给定条件的唯一一个元素,若有多个元素满足条件会抛出异常
var ageOver16 = students.where((student) => student["age"] > 16);
print(ageOver16.toList());
// [{name: jack, age: 18}, {name: lucy, age: 20}]
var ageFirstOver16 = students.firstWhere((student) => student["age"] > 16, orElse: () => null);
print(ageFirstOver16);
// {name: jack, age: 18}
var ageUnder20 = students.singleWhere((student) => student["age"] < 16, orElse: () => null);
print(ageUnder20);
// null
take(), skip()
take(n)
从数组里取 n 个元素skip(n)
跳过数组中的 n 个元素
List arr = [1, 3, 5, 2, 7, 9];
print(arr.take(3).toList());
// [1, 3, 5]
print(arr.skip(4).toList());
// [7, 9]
print(arr.take(3).skip(2).take(1).toList());
// [5]
List.from()
克隆一个数组
List arr = [1, 3, 5, 2, 7, 9];
var clonedArr = List.from(arr);
print(clonedArr);
// [1, 3, 5, 2, 7, 9]
expand()
var arr1 = [[2, 5], [7], [11, 12]];
var flattened = arr1.expand((item) => item).toList();
print(flattened);
// [2, 5, 7, 11, 12]
var arr2 = [2, 5, 8];
var computed = arr2.expand((item) => [item * 8]).toList();
print(computed);
// [16, 40, 64]
// 当对每一项进行计算时类似于 map()
var computed2 = arr2.map((item) => item * 8).toList();
print(computed2);
// [16, 40, 64]
removeRange
删除指定区域的元素
var testList =['a','b','c'];
testList.removeRange(0,1);
print(testList);
数组去重
var testList =['a','b','c','a'];
var s = Set();
s.addAll(testList);
print(s);// {a, b, c}
print(s.toList());// [a, b, c]
参考地址:https://www.jianshu.com/p/1c7d828b1153 , https://www.cnblogs.com/lxlx1798/p/11104618.html