js数组操作
一、数组常用方法:
1、创建
1)构造函数
var a = new Array(); //无参数构造,返回 [] var b = new Array(5); //一个参数表示数组长度,返回 [undefined × 5],b.length == 5 var c = new Array(1,2,3); //多个参数为初始化数组,返回 [1, 2, 3]
2)字面量
var a = []; var b = [1,2,3]; var c = [1,2,3,]; //length在现代浏览器是3,低版本ie下数组长度可能为4
2、访问
以下标索引的方式获取值或赋值
var a = [1,2,3]; console.log(a[0]); //返回1 var index = 1; console.log(a[index]); //返回2,索引可以是变量
3、添加,push、unshift、splice
var a = [1]; a.push(2); //在数组的尾部添加 a.unshift(3); //在数组的头部添加 a.splice(1, 0, 4,5,6); //在索引为1的位置处开始插入4,5,6 console.log(a); //[3, 4, 5, 6, 1, 2]
4、删除,pop、shift、splice,都有返回值,返回的是被删除的元素,splice返回的是被删除的数组
var a = [1, 2, 3, 4, 5, 6]; a.pop(); //删除数组的尾部一个元素 a.shift(); //删除数组的头部一个元素 a.splice(1, 3); //在索引为1的位置处开始删除3个元素 console.log(a); //[2]
======================
以上3到4的函数都是对数组本身做了更改
======================
5、截取,slice
var a = [1, 2, 3, 4, 5, 6]; var b = a.slice(2); console.log(a); //[1, 2, 3, 4, 5, 6] console.log(b); //[3, 4, 5, 6] var c = a.slice(2,4); console.log(a); // [1, 2, 3, 4, 5, 6] console.log(c); // [3, 4]
6、合并和拷贝,concat
1)合并
var a = []; var b = [1,2,3]; var c = [1,2,3,]; a.concat(b, c); console.log(a); // 返回空数组[] var d = a.concat(b, c); console.log(d); //返回[1, 2, 3, 1, 2, 3]
2)拷贝
var a = [1,2,3]; var b = a.concat(); //不加参数是拷贝数组 console.log(b); //[1,2,3]
======================
以上5到6的函数都不对数组本身做更改,而是返回一个新数组
======================
7、排序,reverse,sort
var a = [1,2,3]; a.reverse(); //反序数组 console.log(a); //[3, 2, 1]
sort可以传入排序函数,数组中的对象可以根据某个键的值来排序
var a = [{ id: 1, name: 'lsy' },{ id:10, name: 'lsy10' }, { id:3, name: 'lsy3' }, { id:9, name: 'lsy9' } ]; a.sort(function (b,c) { return b.id-c.id }); console.log(JSON.stringify(a, null, 4)); [ { "id": 1, "name": "lsy" }, { "id": 3, "name": "lsy3" }, { "id": 9, "name": "lsy9" }, { "id": 10, "name": "lsy10" } ]
8、字符串化,join,把数组的元素用符合连接成字符串
var a = [1,2,3]; var str = a.join(','); //将数组用逗号连接 console.log(a); //[1, 2, 3] console.log(str); //1,2,3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通