带你读《现代Javascript高级教程》四、JavaScript数组(2)

简介: 带你读《现代Javascript高级教程》四、JavaScript数组(2)

带你读《现代Javascript高级教程》四、JavaScript数组(1)https://developer.aliyun.com/article/1349685?groupCode=tech_library


3. 数组属性

JavaScript数组还有一些常用的属性,用于描述和操作数组的特性和状态。

 

  • length:返回数组的长度。
  • constructor:返回创建数组对象的原型函数。
  • prototype:数组对象的原型对象,用于添加新的方法和属性。

这些属性可以帮助我们了解数组的结构和信息,以便更好地处理和操作数组。

4. 实现数组API

为了更好地理解数组的方法和实现原理,我们可以尝试自己模拟实现一些数组API的方法。以下是一些常用的数组方法的简单模拟实现示例:

实现添加和删除元素的方法

// 模拟实现 push() 方法Array.prototype.myPush = function(...elements) {
  const len = this.length;
  let i = 0;
  while (i < elements.length) {
    this[len + i] = elements[i];
    i++;
  }
  return this.length;};
// 模拟实现 pop() 方法Array.prototype.myPop = function() {
  if (this
.length === 0) return undefined;
  const lastElement = this[this.length - 1];
  delete this[this.length - 1];
  this.length--;
  return lastElement;};
// 模拟实现 unshift() 方法Array.prototype.myUnshift = function(...elements) {
  const originalLength = this.length;
  for (let i = originalLength - 1; i >= 0; i--) {
    this[i + elements.length] = this[i];
  }
  for (let i = 0; i < elements.length; i++) {
    this[i] = elements[i];
  }
  this.length = originalLength + elements.length;
  return this.length;};
// 模拟实现 shift() 方法Array.prototype.myShift = function() {
  if (this.length === 0) return undefined;
  const firstElement = this[0];
  for (let i = 0; i < this.length - 1; i++) {
    this[i] = this[i + 1];
  }
  delete this[this.length - 1];
  this.length--;
  return firstElement;};
// 示例使用const myArray = [1, 2, 3];
console.log(myArray.myPush(4, 5));    // 输出:5
console.log(myArray);                  // 输出:[1, 2, 3, 4, 5]
console.log(myArray.myPop());        // 输出:5
console.log(myArray);                  // 输出:[1, 2, 3, 4]
console.log(myArray.myUnshift(0)); // 输出:5
console.log(myArray);                  // 输出:[0, 1, 2, 3, 4]
console.log(myArray.myShift());     // 输出:0
console.log(myArray);                  // 输出:[1, 2, 3, 4]

实现修改和访问元素的方法

// 模拟实现 splice() 方法Array.prototype.mySplice = function(startIndex, deleteCount, ...elements) {
  const removedElements = [];
  const len = this.length;
  const deleteEndIndex = Math.min(startIndex + deleteCount, len);
  const moveCount = len - deleteEndIndex;
  // 保存删除的元素
  for (let i = startIndex; i < deleteEndIndex; i++) {
    removedElements.push(this[i]);
  }
  // 移动剩余元素
  for (let i = 0; i < moveCount; i++) {
    this[startIndex + deleteCount + i] = this[startIndex + deleteCount + i + moveCount];
  }
  // 插入新元素
  for (let i = 0; i < elements.length; i++) {
    this[startIndex + i] = elements[i];
  }
  // 更新长度
  this.length = len - deleteCount + elements.length;
  return removedElements;};
// 示例使用const myArray = [1, 2, 3, 4, 5];
console.log(myArray.mySplice(2, 2, 'a', 'b')); // 输出:[3, 4]
console.log(myArray);                             // 输出:[1, 2, 'a', 'b', 5]


带你读《现代Javascript高级教程》四、JavaScript数组(3)https://developer.aliyun.com/article/1349683?groupCode=tech_library

相关文章
|
1月前
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
32 2
2024年5月node.js安装(winmac系统)保姆级教程
|
2月前
|
自然语言处理 前端开发 JavaScript
🛠️ JavaScript数组操作指南:20个精通必备技巧🚀
本文详细介绍了 JavaScript 中的 20 个高效数组操作技巧,涵盖了从基本的添加、移除元素,到数组转换和去重等高级操作。强调了不可变性的重要性,提供了清晰的代码示例,帮助开发者编写更整洁和高效的代码。无论是新手还是经验丰富的开发者,这些技巧都将显著提升您的编码能力,使您在项目中更具竞争力。
44 2
|
2月前
|
JavaScript 前端开发 测试技术
JS都有哪些操作数组的方法
JS都有哪些操作数组的方法
41 3
|
2月前
|
JavaScript 前端开发
js教程——函数
js教程——函数
52 4
|
2月前
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
51 4
|
2月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
52 1
|
2月前
|
JavaScript 前端开发 Java
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
32 5
|
2月前
|
JavaScript 前端开发 索引
JS 删除数组元素( 5种方法 )
JS 删除数组元素( 5种方法 )
76 1
|
2月前
|
JavaScript 前端开发 API
JS中数组的方法flat()怎么用
JS中数组的方法flat()怎么用
30 0
|
2月前
|
JavaScript 前端开发 索引
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
41 0