`
dang1314520ga
  • 浏览: 7245 次
社区版块
存档分类
最新评论

模拟JavaScript Array实现的List

阅读更多

 

模拟JavaScript中的Array对象

主要实现了pust,pop.shift,forEach,concat,slice等方法,后续在更新

 

 

'use strict'

function List() {
	this.length = 0;
	if (arguments.length === 1) {
		if (typeof(arguments[0]) === 'string') {
			this[0] = arguments[0];
			this.length++;
		} else if (typeof(arguments[0]) === 'number') {
			this.length = arguments[0];
		}
	} else {
		for (var i = 0, len = arguments.length; i < len; i++) {
			this[i] = arguments[i];
			this.length++;
		}
	}

}

/**
 * [push description]
 * @return {[type]} [description]
 */
List.prototype.push = function() {
	this.length++;
	this[this.length - 1] = arguments[0];
	return this;
}

/**
 * [slice description]
 * @return {[type]} [description]
 */
List.prototype.slice = function() {
	var list = new List();
	var start = arguments[0] || 0;
	var end = arguments[1] || this.length;
	for (var i = start; i < end; i++) {
		list.push(this[i]);
	}
	return list;
}

/**
 * [shift description]
 * @return {[type]} [description]
 */
List.prototype.shift = function() {
	var first = this[0];
	delete this[0];
	this.length--;
	for (var key in this) {
		if (!isNaN(key)) {
			var v = this[key];
			delete this[key];
			var k = (parseInt(key, 10)) - 1;
			this[k] = v;
		}
	}
	return first;
}

/**
 * [pop description]
 * @return {[type]} [description]
 */
List.prototype.pop = function() {
	var last = this[this.length - 1];
	delete this[this.length - 1];
	this.length--;
	return last;
}

/**
 * [concat description]
 * @return {[type]} [description]
 */
List.prototype.concat = function() {
	var target = arguments[0];
	var _this = this;
	var length = _this.length;
	if (target instanceof List) {
		for (var key in target) {
			if (!isNaN(key)) {
				_this[_this.length] = target[key];
				_this.length++;
			}
		}
	}
}

/**
 * [reverse description]
 * @return {[type]} [description]
 */
List.prototype.reverse = function() {
	var list = new List();
	for (var i = this.length - 1; i > -1; i--) {
		list.push.call(list, this[i]);
	}
	return list;
}

/**
 * [join description]
 * @return {[type]} [description]
 */
List.prototype.join = function() {
	var tag = (arguments.length > 0 ? arguments[0] : ',');
	var str = '';
	for (var i = 0, len = this.length; i < len; i++) {
		str += this[i] + tag;
	}
	str = str.substring(0, str.length - 1);
	return str.toString();
}


/**
 * [forEach description]
 * @param  {Function} fn [description]
 * @return {[type]}      [description]
 */
List.prototype.forEach = function(fn) {
	for (var i = 0, len = this.length; i < len; i++) {
		fn(this[i]);
	}
}

/**
 * [toString description]
 * @return {[type]} [description]
 */
List.prototype.toString = function() {
	return this.join();
}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JavaScript 实现基础 ArrayList 功能

    虽然JavaScript原生不支持ArrayList,但我们可以利用数组(Array)对象来实现类似的功能。下面将详细介绍如何使用JavaScript来实现基础的ArrayList功能,并探讨在没有参数重载(overload)的情况下如何处理方法的...

    各种javascript列表的实现

    JavaScript中可以通过数组模拟队列: ```javascript let queue = []; queue.push('element1'); // 入队 queue.push('element2'); console.log(queue); // 输出:['element1', 'element2'] queue.shift(); // 出队 ...

    使用JavaScript实现Java的List功能(实例讲解)

    在JavaScript中,我们无法直接实现Java的List接口,因为它们属于不同的编程语言,拥有不同的语法和数据结构。但是,我们可以模仿Java List的行为,创建一个类似的数组对象,来提供类似于Java List的功能。以下是一个...

    数据结构与算法javascript学习代码实现.zip

    JavaScript中,Array对象可以用来实现栈,通过push和pop方法实现入栈和出栈操作。 4. **队列(Queue)**:"先进先出"(FIFO)的数据结构,适用于任务调度、消息传递等场景。可以使用Array或双端队列(Deque)来实现...

    通过JavaScript来封装实现常见的数据结构与算法.zip

    JavaScript中的`Array`对象的`push`和`pop`方法可以模拟栈的操作。 4. **队列(Queue)**:队列是一种先进先出(FIFO)的数据结构,常用于任务调度。可以使用`Array`的`push`和`shift`方法来实现。 5. **堆(Heap...

    Unity3D教程:实现表格的模拟绘制1

    我们使用JavaScript的Array类型来存储表格内容。在Start()函数中,初始化一个一维数组list,它的长度等于表格的行数rows乘以列数columns。数组的每个元素代表一个单元格的值,初始值为"0"。 2. **定义表格属性**:...

    dailyLearn:javascript,实现数据结构和算法题

    dailyLearn javascript实现数据结构题 使用javascript实现经典的数据结构面试题。练手和温习 水平有限,如有缺漏,望见谅! 文件结构: 1)ADT ———— 抽象数据类型(ADT) ...15模拟实现map, red

    基于JavaScript讲解的数据结构和算法

    JavaScript中可以通过数组模拟堆,用于实现优先队列等高效操作。 6. **哈希表(Hash Table)**:哈希表通过键值对实现快速查找,JavaScript对象就是一种简单的哈希表。理解哈希冲突和负载因子对于优化查找性能至关...

    数据结构与算法 JavaScript 描述. 章节练习.zip

    JavaScript的Array对象可以轻松实现栈的功能,如使用push和pop操作。 4. 队列(Queue):先进先出(FIFO)的数据结构,常见于任务调度。可以使用Array或双端队列(Dequeue)来实现队列。 5. 哈希表(Hash Table)/...

    JavaScript数组随机排列实现随机洗牌功能

    本文将深入探讨如何利用JavaScript实现数组的随机排列,重点是基于`list.sort()`方法的随机洗牌功能。 首先,我们来看一个简单的示例,定义一个包含数字的数组`list`: ```javascript var list = [1, 2, 3, 4, 5, ...

    模拟浏览器网页顶部切换栏 (ES6面向对象版本)

    总结来说,模拟浏览器网页顶部切换栏的ES6面向对象实现涉及到以下几个关键点: 1. 使用`class`关键字定义`TabBar`类。 2. 在类中定义必要的属性,如`tabs`、`contentContainers`和`activeTab`。 3. 添加`switchTab`...

    Python-用PythonJS和Go实现的算法

    Python的面向对象特性使得类和继承易于实现这些模式,JavaScript的原型继承和闭包可以模拟多种设计模式,Go则通过接口和结构体来实现。 在实际项目中,Rosetta_Project-master可能是一个代码仓库,其中包含了用...

    下拉框多选 js动态实现

    在这里,我们主要讨论如何使用div元素和JavaScript来模拟原生的下拉框多选效果。 首先,原生的HTML `&lt;select&gt;` 元素只支持单选,如果要实现多选,我们需要借助`&lt;select multiple&gt;`属性,但其样式通常难以自定义。...

    模拟韩国雅虎的TAB效果

    在IT行业中,网页开发是一项重要的技能,而JavaScript作为前端开发的核心语言之一,常常被用来实现各种交互效果。本文将详细探讨如何使用JavaScript来模拟韩国雅虎的TAB效果,这是一个常见的网页设计元素,能够帮助...

    JSer-Algorithm:javascript实现的一些数据结构知识

    JavaScript中可以通过对象来模拟链表,实现插入、删除和遍历操作。 3. **栈(Stack)**:后进先出(LIFO)的数据结构,常用于函数调用、表达式求值等场景。JavaScript的数组可以作为栈的实现,使用`push()`和`pop()...

    Hands On Data Structures and Algorithms with JavaScript 9781788398558.pdf

    ### 手把手教你使用JavaScript实现高效的数据结构与算法 #### 核心知识点解析 ##### 一、高效代码的编写 本书《Hands-On Data Structures and Algorithms with JavaScript》的主要目标是教会读者如何编写高效的...

    simple_lisp:用js实现非常简单的列表实现

    在JavaScript中实现一个简单的LISP(LISt Processing)语言,主要涉及到的是数据结构的设计和函数式编程的概念。LISP是一种古老而强大的编程语言,它的核心是列表和函数,因此我们首先需要理解这些基本概念。 **一...

    Algorithm-js-tree-list.zip

    常见的JavaScript列表实现包括数组(Array)。 - **树(Tree)**:树是一种非线性数据结构,由节点(或称为顶点)和连接这些节点的边组成。每个节点都有零个或多个子节点,一个节点最多有一个父节点,根节点没有父...

    C# jQuery冒泡排序分析和理解(初级和基础)

    在本教程中,我们将深入探讨如何使用C#后端和jQuery前端来实现这个算法,这对于初学者来说是很好的实践。 首先,让我们从C#的角度来理解冒泡排序。在C#中,我们可以创建一个数组,并使用for循环嵌套来实现冒泡排序...

Global site tag (gtag.js) - Google Analytics