js笔记——数组

it2022-05-05  127

数组

数组的定义

数组字面量 var arr = []; var arr = [1,2,3]; var arr = [1,,2]; // [1,undefined,2]称为“稀松数组” 构造方法 var arr = new Array(); var arr = new Array(1,2,3,4); var arr = new Array(10); // 表示长度为10的数组

数组的读和写

溢出读结果为undefined var arr = [1,2,3,4]; console.log(arr[4]); // undefined 溢出写的话会将数组扩容 var arr = [1,2,3,4]; arr[5] = 6; console.log(arr); // (6) [1, 2, 3, 4, empty, 6]

常用方法

改变原数组
push:往数组后面追加素,返回值是数组的元素:

手动实现push方法:

Array.prototype.Mypush = function () { for (var i = 0; i < arguments.length; i++) { this[this.length] = arguments[i]; } return this.length; } pop:移除数组尾部的元素,返回移除的元素:

unshift:在数组前面添加元素,返回值为数组长度

shift:从数组前面删除元素,返回值为移除的元素:

reverse:逆转数组顺序 > var arr = [1,2,3]; < undefined > arr.reverse() < (3) [3, 2, 1] > arr < (3) [3, 2, 1] splice:数组切片操作,参数:splice(从第几位开始,截取多少长度,在切口处添加新的数据)

通过splice函数可以实现在数组中的某一位置添加数据:

如果参数为负数的话,就从数组的末尾开始算(数组的底层实现思想是,如果索引为负数,便加上数组本身的长度):

sort:对数组排序 默认按照字符串的排序规则对数组内元素进行排序自定义排序:传入函数类型的参数函数必须有两个参数返回值为负数的话,前面的参数放前面,返回值为正数的话,后面的数放在前面,返回值为0的话,不改变顺序 var arr = [1, 3, 2, 5, 10, 9]; console.log(arr.sort()); // [1, 10, 2, 3, 5, 9] var newArr = arr.sort(function (a, b) { if (a > b) { return 1; } else { return -1; } // 或者 return a - b; }); console.log(arr); // [1, 2, 3, 5, 9, 10] console.log(newArr); // [1, 2, 3, 5, 9, 10]

面试题:给一个排序好的数组乱序

var arr = [1,2,3,4,5,6,7]; arr.sort(function(a,b){ return Math.random() - 0.5; });
不改变原数组
concat:将两个数组连接起来,返回连接后的数组

slice:截取数组

第一个参数表示开始截取的位置第二个参数表示截取到位置的索引(不包含该位置)只传递一个参数的话表示从参数位置到数组末尾如果参数为负数,表示负数加上length不传参数表示截取整个数组 var arr = [1, 2, 3, 4, 5, 6, 7]; console.log(arr.slice(1, 3));// [2, 3] console.log(arr.slice(3));// [4, 5, 6, 7] console.log(arr.slice(-2));// [6, 7] console.log(arr.slice());// [1, 2, 3, 4, 5, 6, 7]

join:将数组连接成字符串(默认用,连接),split:将字符串拆成数组

var arr = [1, 2, 3, 4]; console.log(arr.join());// 1,2,3,4 console.log(arr.join("-"));// 1-2-3-4 var str = "alibaba-baidu-wangyi-tencent"; console.log(str.split("-"));// ["alibaba", "baidu", "wangyi", "tencent"]

最新回复(0)