带你读《现代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

相关文章
|
5月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
241 19
|
8月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
7342 23
|
8月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
477 2
2024年5月node.js安装(winmac系统)保姆级教程
|
自然语言处理 前端开发 JavaScript
🛠️ JavaScript数组操作指南:20个精通必备技巧🚀
本文详细介绍了 JavaScript 中的 20 个高效数组操作技巧,涵盖了从基本的添加、移除元素,到数组转换和去重等高级操作。强调了不可变性的重要性,提供了清晰的代码示例,帮助开发者编写更整洁和高效的代码。无论是新手还是经验丰富的开发者,这些技巧都将显著提升您的编码能力,使您在项目中更具竞争力。
222 2
|
JavaScript 前端开发 测试技术
JS都有哪些操作数组的方法
JS都有哪些操作数组的方法
415 3
|
JavaScript 前端开发
js教程——函数
js教程——函数
287 4
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
359 4
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
180 1

热门文章

最新文章