当前位置: 首页 > news >正文

JavaScript 数组对象的属性、方法

JavaScript 数组是编程中最常用的数据结构之一,它提供了丰富的属性和方法,用于存储和操作有序的数据集合。本文将系统介绍 JavaScript 数组对象的三大属性和八大类方法,并通过示例代码和图表深入解析其用法和行为。


二、数组对象的三大属性

1. length 属性

length 属性表示数组中元素的个数。JavaScript 数组的 length 是动态的,可以随时修改。

var arr = [12, 23, 5, 3, 25, 98, 76, 54, 56, 76]; // 定义一个包含10个数字的数组
alert(arr.length); // 输出: 10arr.length = 12; // 扩展数组长度
alert(arr.length); // 输出: 12
alert(arr[8]); // 输出: 56arr.length = 5; // 截断数组
alert(arr[8]); // 输出: undefined(元素被丢弃)arr.length = 10; // 恢复长度
alert(arr[8]); // 输出: undefined(无法恢复丢弃的元素)

🔍 隐式修改:访问或设置超出当前长度的索引会自动扩展数组:

arr[15] = 34; // 设置第16个元素
alert(arr.length); // 输出: 16

2. prototype 属性

prototype 允许为所有数组实例添加自定义方法:

// 定义求最大值的方法
function array_max() {var i, max = this[0];for (i = 1; i < this.length; i++) {if (max < this[i]) max = this[i];}return max;
}Array.prototype.max = array_max; // 添加到原型
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max(); // y = 6

3. constructor 属性

constructor 指向创建该数组的构造函数:

var arr = new Array();
if (arr.constructor === Array) {console.log("该对象是数组");
}

三、数组的八大操作方法

1. 创建数组

var arr1 = new Array();        // 空数组
var arr2 = new Array(5);       // 长度为5的数组
var arr3 = new Array(1, 2, 3); // 带初始值的数组

2. 访问元素

var value = arr[0]; // 获取第一个元素
arr[0] = 100;       // 修改第一个元素

3. 添加元素

// 在末尾添加
arr.push(6, 7);      // 返回新长度// 在开头添加
arr.unshift(-1, 0);  // 返回新长度// 在指定位置插入
arr.splice(2, 0, 99); // 从索引2插入99,删除0个元素

4. 删除元素

arr.pop();           // 删除最后一个元素
arr.shift();         // 删除第一个元素
arr.splice(1, 2);    // 从索引1开始删除2个元素

5. 截取与合并

var sub = arr.slice(1, 3); // 截取索引1到2的元素
var newArr = arr.concat([6, 7]); // 合并新数组

6. 拷贝数组

var copy1 = arr.slice(0);    // 浅拷贝
var copy2 = arr.concat();    // 浅拷贝
var deepCopy = JSON.parse(JSON.stringify(arr)); // 深拷贝(适用于简单数据)

7. 排序与反序

arr.reverse(); // 反序
arr.sort();    // 默认按字符串排序
arr.sort((a, b) => a - b); // 数字升序排序

8. 数组转字符串

var str = arr.join("|"); // 用"|"连接元素
console.log(arr.toString()); // 逗号连接的字符串

四、UML 关系图(Mermaid)

prototype
Array
-length: number
+push(...items)
+pop()
+shift()
+unshift(...items)
+slice(start?, end?)
+splice(start, deleteCount, ...items)
+concat(...items)
+reverse()
+sort(compareFn?)
+join(separator?)
+toString()
ArrayPrototype
+max()

五、单词表(用于学习参考)

单词/短语音标词性词根/词缀释义搭配例子
array/əˈreɪ/noun-数组create an arraylet arr = new Array();
prototype/ˈproʊtətaɪp/nounproto- + type原型prototype propertyArray.prototype.method
constructor/kənˈstrʌktər/nounconstruct + -or构造函数constructor functionnew Array()
splice/splaɪs/verb-拼接array.splice()arr.splice(1, 2)
concat/kənˈkæt/verbcon- + cat连接array.concat()arr.concat([1,2])
slice/slaɪs/verb-切片array.slice()arr.slice(0, 2)
length/leŋθ/nounlong + -th长度array.lengtharr.length = 10
reverse/rɪˈvɜrs/verbre- + verse反转array.reverse()arr.reverse()
sort/sɔrt/verb-排序array.sort()arr.sort((a,b) => a-b)

七、总结

JavaScript 数组是灵活且强大的数据结构,通过其动态的 length 属性、可扩展的 prototype 和丰富的内置方法,开发者可以高效地处理数据集合。理解这些特性并熟练运用相关方法,是提升 JavaScript 编程能力的关键。


文章转载自:

http://B0UuEbzA.xjtnp.cn
http://nBGAqpix.xjtnp.cn
http://Gg61Z1tr.xjtnp.cn
http://W3F6WUwV.xjtnp.cn
http://Y9C2x3lv.xjtnp.cn
http://hGzfinPv.xjtnp.cn
http://ydOLETKc.xjtnp.cn
http://4NxQzGsv.xjtnp.cn
http://EKbarbmO.xjtnp.cn
http://JN8tlDws.xjtnp.cn
http://ev3ZFBod.xjtnp.cn
http://E6DGtGRA.xjtnp.cn
http://NnuMYxHH.xjtnp.cn
http://pAtN4CzY.xjtnp.cn
http://fXPPskCR.xjtnp.cn
http://3Xj9F0DK.xjtnp.cn
http://CWhVDkjE.xjtnp.cn
http://k6d91eqo.xjtnp.cn
http://KZLls7BS.xjtnp.cn
http://6e5zQwRh.xjtnp.cn
http://6RyFazgn.xjtnp.cn
http://aPZXlpyY.xjtnp.cn
http://RlqLRivH.xjtnp.cn
http://sxh2yzzQ.xjtnp.cn
http://AlG1W961.xjtnp.cn
http://iSGIgRvb.xjtnp.cn
http://jBE8xNQt.xjtnp.cn
http://mtNkkkWt.xjtnp.cn
http://EItuoyaV.xjtnp.cn
http://59O1vnq9.xjtnp.cn
http://www.dtcms.com/a/379033.html

相关文章:

  • vscode选择py解释器提示环境变量错误
  • 【2】标识符
  • Futuring robot旗下家庭机器人F1将于2025年面世
  • HTTPS 错误解析,常见 HTTPS 抓包失败、443 端口错误与 iOS 抓包调试全攻略
  • 利用数据分析提升管理决策水平
  • OC-KVC
  • Linux系统编程—基础IO
  • 考研408计算机网络2023-2024年第33题解析
  • 手眼标定之已知同名点对,求解转换RT,备份记录
  • 《MySQL事务问题与隔离级别,一篇讲透核心考点》
  • 水泵自动化远程监测与控制的御控物联网解决方案
  • Bug排查日记的技术
  • AR眼镜:化工安全生产的技术革命
  • 跨越符号的鸿沟——认知语义学对人工智能自然语言处理的影响与启示
  • 深入理解大语言模型(5)-关于token
  • Node.js-基础
  • JVM垃圾回收的时机是什么时候(深入理解 JVM 垃圾回收时机:什么时候会触发 GC?)
  • Python 版本和Quantstats不兼容的问题
  • SFINAE
  • TCP 三次握手与四次挥手
  • 【iOS】UIViewController生命周期
  • 硬件开发(7)—IMX6ULL裸机—led进阶、SDK使用(蜂鸣器拓展)、BSP工程目录
  • 人工智能学习:Transformer结构中的编码器层(Encoder Layer)
  • RISCV中PLIC和AIA的KVM中断处理
  • 掌握梯度提升:构建强大的机器学习模型介绍
  • 全球智能电网AI加速卡市场规模到2031年将达20216百万美元
  • springbook3整合Swagger
  • LMS 算法:抗量子时代的「安全签名工具」
  • CUDA中thrust::device_vector使用详解
  • Python学习-day8 元组tuple