来自《http://www.yshjava.cn/post/416.html》的一篇文章。
原生的JavaScript数组不能像Java中的List一样在任意位置插入和移除元素,而恰巧很多时候偏偏需要这样的功能,怎么办呢?只好对原生的JavaScript数组做一点扩展了...
扩展的代码非常简单,原理是向JavaScript的数组的原型中添加两个两个函数:insert和remove,分别负责向数组中指定位置插入元素和移除指定位置的元素。代码如下:
Array.prototype.insert = function(index, value) { if(index < 0){ //如果index位置无效,默认插入到最后一个位置上 index = this.length; } var part1 = this.slice(0, index); var part2 = this.slice(index); part1.push(value); return (part1.concat(part2)); }; Array.prototype.remove = function(index) { //检查index位置是否有效 if(index >= 0 && index < this.length){ var part1 = this.slice(0, index); var part2 = this.slice(index); part1.pop(); return (part1.concat(part2)); } return this; };
测试代码如下:
var arr = [1, 2, 3]; //遍历原始数组 for(var i = 0; i < arr.length; i++){ alert(arr[i]); } //在第二个位置插入一个新元素 arr = arr.insert(1,'new 2'); //删除第三个位置上的元素 arr = arr.remove(3); //遍历新数组 for(var i = 0; i < arr.length; i++){ alert(arr[i]); }
总是觉得这样分隔和连接数组,在性能上可能会有问题,不知道还有没有其它更好的方式....
相关推荐
数组提供了一种高效的方式来组织和访问数据,因为我们可以直接通过索引来访问数组中的任何元素。在各种编程语言中,如C、C++、Java、Python等,向数组中添加元素的操作都是常见的任务。以下我们将详细探讨在不同编程...
插入和删除操作在数组中通常较复杂,因为移动元素的开销较大。查找操作可以通过线性搜索(效率较低)或二分搜索(适用于已排序数组,效率较高)进行。排序则有冒泡排序、选择排序、插入排序、快速排序等多种算法。 ...
动态数组非常适合于需要频繁添加和删除元素的场景,具体应用场景包括但不限于: 1. **数据库查询结果处理**:当从数据库获取数据时,往往不确定返回的结果集大小,此时可以使用动态数组来存储查询结果。 2. **用户...
数组的优势在于快速查找、插入和删除元素,以及支持各种高级操作,如排序和搜索。 三、文本到数组的转换方法 1. 分词:这是将文本分解成单个词汇单元的过程,通常是单词。在中文中,由于没有明显的空格分隔,需要...
- **插入和删除元素**:Python的`append()`、`insert()`和`remove()`,Java的`add()`和`remove()`,C++的`std::vector`提供了类似功能。 - **排序数组**:Python的`sorted()`或`arr.sort()`,Java的`Arrays.sort(arr...
- **插入与删除**:在数组中添加或移除元素,如JavaScript的`push()`、`pop()`、`splice()`,Python的`append()`、`remove()`。 - **排序**:对数组进行升序或降序排列,如JavaScript的`sort()`,Python的`sort()`...
需要注意的是,由于JavaScript数组的索引是从0开始的,所以在操作时需要特别注意索引值的计算。例如,在判断队列是否已满或是否为空时,我们需要检查头部和尾部索引是否相邻或相同,从而避免错误地处理队列的状态。 ...
以下是一些关于JavaScript数组和列表操作的重要知识点: 1. **声明数组**:你可以使用`[]`来创建一个空数组,或者在括号内指定初始元素,如`var list = [1, 2, 3];`。 2. **数组长度**:使用`.length`属性获取数组...
链表每个节点包含元素和指向下一个节点的引用,它在插入和删除操作上比数组更高效。然而,链表查找元素速度较慢,因为无法直接通过索引访问。 队列(Queue)是一种先进先出(FIFO)的数据结构,常用数组或链表实现...
做前端开发几年,在项目中用到数组去重的机会倒不是很多,但是在面试的时候却经常被问到,个人理解,这道题真正考的是对JavaScript的基础的掌握,因为有很多种方式可以做到。这次就根据这道题,将相关的知识理解透彻...
数组和链表各有优势,数组提供随机访问,而链表则擅长插入和删除操作。有时,我们可能需要将数组转换为链表,以便利用链表的优势。本文将详细介绍如何使用JavaScript实现这一转换,并探讨不同类型的链表,如单链表和...
缺点:大小固定,插入和删除元素效率低,因为可能需要移动大量元素。 5. **动态数组**: 某些编程语言(如C++的`std::vector`,Java的`ArrayList`,Python的`list`)提供了动态数组,允许在运行时改变数组的大小。...
本主题“CMP344 Andrew Klump 第3章:将小元素插入列表”专注于探讨如何在JavaScript数组中有效地插入小元素。 1. **数组的基本操作** 在JavaScript中,数组有多种操作方法,如`push()`、`unshift()`、`splice()`...
对于数组元素的访问和操作,JavaScript数组提供了非常丰富的接口: - 通过索引访问数组元素,如`arrayObj[1]`获取第二个元素。 - 修改数组元素值,如`arrayObj[1] = '这是新值'`。 - 向数组末尾添加元素,如`...
1. **数组(Array)**:数组是最基本的数据结构之一,JavaScript中的数组可以存储任意类型的值,并提供了丰富的内置方法,如push、pop、shift、unshift、splice等,便于进行插入、删除和查找操作。 2. **链表...
这里,`list.splice(0, middleIndex)`从数组的开始位置删除指定数量的元素,并返回这些元素,而`list.splice(-middleIndex)`则从数组末尾删除相同数量的元素。 值得注意的是,当数组长度为奇数时,前半部分会比后半...
`querySelector()`和`querySelectorAll()`是两个常用的DOM选择器,它们分别返回匹配CSS选择器的第一个元素和所有元素。`getElementById()`, `getElementsByClassName()`, 和 `getElementsByTagName()`则是更传统的...
然而,JavaScript自身的局限性导致Vue无法自动检测某些数组和对象的变化。为了解决这个问题,Vue提供了一些方法来确保在添加或修改数组和对象的值时仍然保持响应性。 1. **响应式修改数组**: 当直接通过索引设置...