学习JS第八节——数组

mac2026-01-03  7

1.三目运算符

var num = 判断条件 ? 返回式一 : 返回式二;

2.数组定义方法

var arr = [1,2,3]; 数组可以自动伸长 var arr[10] = 10; //数组长度就是11 var arr = new Array(1,2,3); 两者的区别是,第二种可以直接定义数组的长度var arr = new Array(10);,第一个不可以,但是第二个的参数不能是小数,因为长度不能是小数。

3.push

在数组最后一位添加

//代码实现 var arr = [1,2,3]; Array.prototype.push = function() { for(var i = 0; j < arguments.length; i++) { this[this.length] = arguments[i]; } return this.length; }

4.pop

弹出数组最后一位,参数只能为空或1,因为其他的参数不会识别

5.shift

6.unshift

在数组前面添加,且返回数组长度

7.reverse

反转数组

8.splice(从第几位开始,截取多少长度,在切口处添加新数据)

//系统内部实现部分原理 splice = function(pos) { pos += pos > 0 ? 0 : this.length; }

9.sort

对数组排序,但是对比的是ASCII,因此系统留了接口,改变排序规则

var arr = [1, 3, 5, 4, 10]; //控制台输入 arr.sort //返回 1,10,3,4,5

系统留的接口,有两个规则 (1)必须写两个形参 (2)看返回值 a.当返回值为负数时,那么前面的数放在前面 b.正数,后面的数在前 c.0,不改变

sort升序排 arr.sort(function(a, b) { return a - b; }); sort降序排 arr.sort(function(a, b) { return b - a; }); sort任意乱序排 arr.sort(function(a, b) { return Math.random() - 0.5; }); 对象内属性排序 var person1 = { name : 'a', age : 10 } var person2 = { name : 'a', age : 13 } var person3 = { name : 'a', age : 4 } var arr = [person1, person2, person3]; arr.sort(function (a, b) { if(a.age > b.age) { return 1; } else { return -1; } });

10.concat

拼接两个数组,且不改变原数组

11.slice(从该位开始截取, 截取到该位)

不改变原数组,所以要新建数组接收返回值 第一个参数,可以为负数,代表倒数,比如-1代表倒数第一位

var arr = [1,2,3,4,5]; var newArr = arr.slice(1, 3); // newArr // 2,3

12.join(‘连接数组的东西’)

注意:参数要加引号 返回值是字符

var arr = [1,2,3,4,5]; // arr.join('-') // 1-2-3-4-5

没有参数的话以逗号连接

13.str.split(‘以这个字符拆分数组’)

split是字符串的方法,返回值是数组

var str = 'alibaba'; var str1 = 'baidu'; var str2 = 'tencent';

14.类数组

长得像数组也能像数组一样用,但不是数组

可以利用属性名模拟数组的特性可以动态的增长length属性如果强行让类数组调用push方法,则会根据length属性值的位置进行属性的扩充

形式如下:

var obj = { //属性要为索引(数字)属性,必须有length,最好有push "0" : 'a'; "1" : 'b'; "2" : 'c'; "length" : 3, "push" : Array.prototype.push }

增加splice方法后,类数组可以跟数组长得很像

var obj = { //属性要为索引(数字)属性,必须有length,最好有push "0" : 'a'; "1" : 'b'; "2" : 'c'; "length" : 3, "push" : Array.prototype.push, "splice" : Array.prototype.splice }

具体区别自己输入到控制台看看

push方法的系统实现:

Array.prototype.push = function(target) { obj[obj.length] = targe; obj.length ++; }

一个例子:

var obj = { "2" : 'a'; "3" : 'b'; "length" : 2, "push" : Array.prototype.push } obj.push('c'); obj.push('d'); // obj变为 { "2" : 'c'; "3" : 'd'; "length" : 4, "push" : Array.prototype.push }

类数组优点:可以被作为数组和对象使用,具有强大的存储数据能力。 然而不能所有的数组方法均使用,需要自己用原型 Array.prototype.方法定义 在DOM中生成的对象数组都是类数组。

最新回复(0)