集合,没那么简单
好久都没有碰过前端页面的东西了,前几天做一个下拉列表的动态增删,是由js在前台操作select的option来实现的,但是奇怪的事,有的时候不能正确的清空列表的所有选项!本来觉得没有什么可以记的,但是细细咀嚼,还是有必要的!
先贴出我实现清空列表的代码
//删除列表的所有选项
function clearListBox(listBox) {
for (var i = 0; i < listBox.length; i++) {
removeListBoxOption(listBox,i);
};
};
//删除给定列表的某个选项
function removeListBoxOption(listBox,index) {
listBox.remove(index);
};
function clearListBox(listBox) {
for (var i = 0; i < listBox.length; i++) {
removeListBoxOption(listBox,i);
};
};
//删除给定列表的某个选项
function removeListBoxOption(listBox,index) {
listBox.remove(index);
};
如果你没有一眼看出问题所在,那么我想你可能是foreach的忠实粉丝;其实集合也好,数组也罢,虽然很多时候是作为容器来使用,其实他们没有那么简单;
很多时候他们是我们缓存昂贵资源的法宝,如果你对性能要求比较高,那么很多时候你的开发生活不能缺少它!
从数据结构的角度来看,集合可以实现各种复杂的数据结构,.net中实现的字典、列表等等,都是基于数组实现的;同时不同的数据结构,自然遍历和增删的性能是不一样的,不过我们不用担心,这些微软的类库开发人员都为我们考虑了!不得不说微软为了提高开发人员的工作效率,替我们做了很多的工作;那能不能说,缺少数据结构和算法的web开发程序猿,就不是真正的程序员呢?这个留待以后谈;
从更广义上来说,变量是承载某种类型数值的集合,原始类型的变量直接承载原始类型的内容;复合类型变量本质上承载各种原始类型的变量的集合,当然其也可以有复合类型的成员,当然类除了定义其数据,也定义了其行为来操作修改这些数据;还有我们平时使用的数据库二维关系表……
以上纯属自己开发中的一些体会,有什么不对的地方,欢迎大家批评斧正;今天我们要解决的问题是列表集合的遍历删除问题;那么我们先来看看集合的遍历中一些容易被忽略的细节;
Foreach的遍历,对获取集合的方法只会调用一次
public class Test
{
//集合字段
private IList<int> collection = new List<int>() { 1, 2, 3, 4, 5, 6 };
//集合字段对应属性
public IList<int> Collection
{
get
{
Console.WriteLine("获取了集合");
return this.collection;
}
}
/// <summary>
/// 测试foreach
/// </summary>
public void TestForeach()
{
foreach (int item in this.Collection)
{
int a = item;
}
}
}
{
//集合字段
private IList<int> collection = new List<int>() { 1, 2, 3, 4, 5, 6 };
//集合字段对应属性
public IList<int> Collection
{
get
{
Console.WriteLine("获取了集合");
return this.collection;
}
}
/// <summary>
/// 测试foreach
/// </summary>
public void TestForeach()
{
foreach (int item in this.Collection)
{
int a = item;
}
}
}