javascript中的表结构
列表是一种常见的数据结构,通常列表是一族有徐的数据,列表中的数据项称为元素。在javascript中列表中的数据可以是任意类型的,列表中可以保存多少元素没有事先限定,实际使用时元素的数量只收到程序内内存的限制。
不包含任何元素的列表称为空列表,列表中包含元素的个数称为列表的length,在内部实现上,用一个变量listSize保存列表中元素的个数。可以在列表末尾append一个元素,也可以在一个给定元素后面insert一个元素,使用remove方法从列表中删除元素,使用clear方法清空列表中素有的元素。
列表有前后,分别对应front和end,使用getElement()方法显示当前元素,列表拥有描述元素位置的属性,使用next()方法可以从当前元素移动到下一个元素,使用prev()方法可以移动到当前元素的前一个元素,还可以使用moveTo(n)方法直接移动到指定的位置,这里n标识要移动到第n个位置,currPos属性标识列表中的当前位置。
listSize(属性) | 列表的元素个数 |
pos( 属性) | 列表的当前位置 |
length( 属性) | 返回列表中元素的个数 |
clear( 方法) | 清空列表中的所有元素 |
toString( 方法) | 返回列表的字符串形式 |
getElement( 方法) | 返回当前位置的元素 |
insert( 方法) | 在现有元素后插入新元素 |
append( 方法) | 在列表的末尾添加新元素 |
remove( 方法) | 从列表中删除元素 |
front( 方法) | 将列表的当前位置设移动到第一个元素 |
end( 方法) | 将列表的当前位置移动到最后一个元素 |
prev(方法) | 将当前位置后移一位 |
next( 方法) | 将当前位置前移一位 |
currPos( 方法) | 返回列表的当前位置 |
moveTo(方法) | 将当前位置移动到指定位置 |
下面我们看看代码实现
- function List() {
- this.listSize = 0;
- this.pos = 0;
- this.dataStore = []; //初始化一个空数组来保存列表元素
- this.clear = clear;
- this.find = find;
- this.toString = toString;
- this.insert = insert;
- this.append = append;
- this.remove = remove;
- this.front = front;
- this.end = end;
- this.prev = prev;
- this.next = next;
- this.length = length;
- this.currPos = currPos;
- this.moveTo = moveTo;
- this.getElement = getElement;
- this.contains = contains;
- //给列表添加元素,给列表的下一个位置增加一个新的元素,这个位置刚好等于listSize的值
- function append(element) {
- this.dataStore[this.listSize++] = element;
- }
- //在列表中查找一个元素,对数组对象dataStore迭代,查找给定的元素,如果找到就返回钙元素在列表中的位置
- function find(element) {
- for(var i = 0; i < this.dataSource.length; ++i) {
- if(this.dataSource[i] == element) {
- return i;
- }
- return -1;
- }
- }
- //从列表中删除元素,先在列表中找到该元素,然后删除它,并且调整底层的数据对象以填补钙元素留下的空白,slice()方法简化这个过程
- function remove(elemment) {
- var foundAt = this.find(elemment);
- if(foundAt > -1) {
- this.dataSource.splice(foundAt, 1);
- --this.listSize;
- return true;
- }
- return false;
- }
- //返回列表中的元素个数
- function length(){
- return this.listSize;
- }
- function toString(){
- return this.dataStore;
- }
- //插入元素,先找到要插入的位置,然后插入一个元素listSize自增
- function insert(element, after){
- var insertPos = this.find(after);
- if(insertPos > -1){
- this.dataStore.splice(insertPos + 1, 0, element);
- ++this.listSize;
- return true;
- }
- return false;
- }
- //清空列表中所有元素,指针指向第一个
- function clear(){
- delete this.dataStore;
- this.dataStore = [];
- this.listSize = this.pos = 0;
- }
- //判断给定值是否在列表中
- function contains(element){
- for (var i=0; i<this.dataStore.length; ++i) {
- if(this.dataStore[i] == element){
- return true;
- }
- }
- return false;
- }
- //回到第0个
- function front(){
- this.pos = 0;
- }
- //到最后一个
- function end(){
- this.pos = this.listSize - 1;
- }
- //上一个,注意这里不判断边界
- function prev(){
- --this.pos;
- }
- //下一个,注意这里不判断边界
- function next(){
- ++this.pos;
- }
- //当前指针
- function currPos(){
- return this.pos;
- }
- //定位到位置
- function moveTo(position){
- // if( position>-1 && position<this.listSize ){
- this.pos = position;
- // }
- }
- //返回当前元素
- function getElement(){
- return this.dataStore[this.pos];
- }
- }
- var names = new List();
- names.append('Clayton');
- names.append('Raymond');
- names.append('Cynthia');
- names.append('Jennifer');
- names.append('Bryan');
- names.append('Danny');
- for(names.front(); names.currPos() < names.length(); names.next()) {
- document.writeln(names.getElement());
- }
- for(names.end(); names.currPos() >= 0; names.prev()) {
- document.writeln(names.getElement());
- }
最后的输出结果如下:
注意next()方法和prev()方法不判断边界,只负责移动下标。
javascript中的表结构的更多相关文章
- JavaScript中的分支结构
说到JavaScript中的分支结构,我们就不得不提到流程控制这个词,我们所有的程序都是由数据和算法组成的.程序=数据+算法通常我们所说的算法都可以通过"顺序","分支& ...
- 通过jdbc获取数据库中的表结构
通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类 1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等.Met ...
- VSTO学习笔记(八)向 Word 2010 中写入表结构
原文:VSTO学习笔记(八)向 Word 2010 中写入表结构 前几天公司在做CMMI 3级认证,需要提交一系列的Word文档,其中有一种文档要求添加公司几个系统的数据库中的表结构.我临时接到了这项 ...
- Sql中获取表结构(字段名称,类型,长度,说明)
Sql中获取表结构(字段名称,类型,长度,说明) SELECT TableName = OBJECT_NAME(c.object_id), ColumnsName = c.name, Descript ...
- 查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数
查询SQLServer2005中某个数据库中的表结构.索引.视图.存储过程.触发器以及自定义函数 2013-03-11 09:05:06| 分类: SQL SERVER|举报|字号 订阅 ( ...
- javascript中的队列结构
1.概念 队列和栈结构不同,栈是一种后进先出的结构,而队列是一种先进先出的结构.队列也是一种表结构,不同的是队列只能在队尾插入元素,在队首删除元素,可以将队列想象成一个在超时等待排队付钱的队伍,或者在 ...
- java中访问mysql数据库中的表结构信息
package cn.hncu.meta; import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.Re ...
- 如何导出远程oracle数据库中的表结构
从远程oracle数据库上导出指定表的表结构语句有两种方法: 方法一:通过sql语句获得 1,make sure that you can connect the remote database. 2 ...
- JavaScript中的表单编程
表单编程 1获取表单相关信息 1.什么是表单元素 1.什么是表单元素 在H TML中表单就是指form标签,它的作用是将用户输入或选择的数据提交给指定的服务器 2.如何获取表单元素 <form ...
随机推荐
- RHEL7用户管理
本文介绍Linux的用户管理 用户管理 Linux 是一个可以实现多用户登陆的操作系统,不同用户可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件. 但实 ...
- ABAP modify screen:修改屏幕,实现隐藏、禁止输入字段
Loop at screen会loop处理屏幕上的每一个组件,并对其做相应的处理. SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME.PARAMETERS ...
- ABAP中Conversion Routine示例
在SAP的Domain定义中,Output Length下面有个Convers. routine的标识,这是SAP用来进行输入输出转换的.我们知道,屏幕上的I/O字段都是字符串形式的,而数 ...
- MS10-046漏洞测试
这次用到MS10-046这个远程执行漏洞(Windows快捷方式LNK文件自动执行代码漏洞攻击) 命令: 1. msfconsole //启动MSF Metasploit 2. sear ...
- iOS didReceiveMemoryWarning 的处理
当iOS触发didReceiveMemoryWarning这个方法的时候,我们一般会做一些手动处理,强制清理掉一些目前不用的数据.但是这个方法并不只是单纯的通知开发者你的内存已经吃紧了,系统通知你的同 ...
- iOS设计模式之命令模式
命令模式 基本理解 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化:对请求队列或记录请求日志,以及支持客可撤离的操作. 苹果的Target-Action ...
- Android环境的搭建
一.Java环境的配置(以JDK1.7为例) 在环境变量下查看,查看是否存在JAVA_HOME,没有的话新建一个 JAVA_HOME:java安装目录下jdk的安装目录 Path:jdk目录下面的bi ...
- 【读书笔记】iOS-特性
一,@符号标志着“你将使用Objective-C的特殊用法”.@property是一种新的编译器功能,表示声明了一个新对象属性. 二,@property预编译指令的作用是自动声明属性的setter和g ...
- Unity3D事件函数的执行顺序 - 包含渲染等模块的完整版,中英文对照
原文地址: http://www.cnblogs.com/ysdyaoguai/p/3746828.html In Unity scripting, there are a number of eve ...
- 在iOS 8中使用UIAlertController
iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController在实现视图控制器间的过渡动画效果和自适应设备尺寸 ...