JavaScript 学习笔记 p70 - 78

~ 内建对象:数组(Array)。数组使用数字来作为索引操作元素。存储性能比普通对象好。添加元素语法:数组 [索引] = 值。读取数组中的元素语法:数组 [索引] ,读取不存在的索引返回 undefined 。(对于连续的数组)获取数组长度语法:数组.length 。对于非连续的数组,使用 length 会获取到数组的最大的索引+1。

~ 索引:从0开始的整数。索引对应普通对象的属性名,元素对应属性值。

var arr = new Array ();
console.log (typeof.arr);
//返回 object 

~ 修改 length :语法:arr.length = 数值; 。如果修改的 length 大于原长度,则多出部分会空出来,如果修改的小于原长度,多出的元素会被删除。

~ 向数组最后添加一个元素 语法:arr [arr.length] = 值; 。

~ 使用字面量创建数组: var arr = [ ]; 。创建时就可以指定数组中的元素: var arr = [1,2,3,4,5,10]; 。

~ 使用构造函数创建数组时,也可同时添加元素: var arr2 = new Array (10, 20, 30); 。

区别: arr2 = new Array (10); 表示创建长度为 10 的数组。

~ 数组中的元素可以是任意数据类型。也可以是对象: arr [arr.length] = obj; 。 arr = [{name: "孙悟空"}, {name: "猪八戒"}, {name: "沙和尚"}]; 。也可以是一个函数:arr = [function () {alert (1)}, function () {alert (2)}]; 。数组中也可以放数组,称作二维数组。

~ 数组的方法 push ( ) :该方法可以向数组的末尾添加一个或多个元素并返回数组的新的长度。要添加的元素作为方法的参数传递。 

var arr = ["孙悟空", "猪八戒", "沙和尚"];
var result = arr.push ("唐僧", "蜘蛛精", "白骨精");  
console.log (arr);
console.log ("result = "+result); 
// console.log (arr) 返回:"孙悟空", "猪八戒", "沙和尚", "唐僧", "蜘蛛精", "白骨精"
// console.log (result) 返回:6

~ pop ( ) :该方法可以删除数组的最后一个元素。返回值是被删除的元素。

~ unshift ( ):该方法向数组的开头添加一个或多个元素,并返回新的数组长度。插入元素后,其他元素的索引会依次调整。

~ shift ( ):该方法可以删除数组的第一个元素。返回值是被删除的元素。

~ 遍历数组:将数组中的所有元素都取出来。consol.log (arr [0]);

var arr = ["孙悟空", "猪八戒", "沙和尚", "唐僧", "蜘蛛精", "白骨精"];
for (var i = 0; i < arr.length; i++) {
    console.log (arr [i]);
}

~ 数组的遍历:获取 arr 中 Person 对象。

function Person (name, age) {
        this.name = name;
        this.age = age;
    }
    Person.prototype.toString = function () {
        return "Person[name = "+this.name+",age = "+this.age+"]";
    }
    // 创建 Person 对象
    var per = new Person ("孙悟空", 18);
    var per2 = new Person ("红孩儿", 8);
    var per3 = new Person ("白骨精", 16);
    var per4 = new Person ("二郎神", 38);
    var per5 = new Person ("猪八戒", 28);
    var perArr = [per, per2, per3, per4, per5];

    function getAdult (arr) {
        var newArr = [];
        // 遍历 arr,获取 arr 中Person 对象
        for (var i = 0; i < arr.length; i++) {
            var p = arr [i];
            // 判断年龄大于 18
            if (p.age >= 18) {
                // 将对象放到新数组
            newArr.push (p);
            }

        }
        return newArr;
    }
    var result = getAdult (perArr);
    console.log (result);

~ 数组的 forEach ( ) 方法:需要一个函数做为参数。这种由我们创建、不由我们调用的函数,称为回调函数。数组中有几个元素,函数执行几次。每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,我们可以定义形参来读取这些内容。浏览器会在回调函数中传递三个函数。第一个为当前正在遍历的元素,第二个参数为当前正在遍历元素的索引,第三个参数为正在遍历的数组对象。

~ 数组的 slice ( ) 方法:从某个已有的数组返回某个元素。从数组中提取指定元素。该方法不会改变原数组而是将提取的元素封装到一个新的数组。参数:截取开始的位置的索引和截取结束的位置的索引 arr.slice (0, 2); 。包含开始索引,不包含结束索引。第二个参数可以不写,此时会截取从开始索引往后的所有元素。索引可以传递一个负值,从后往前计算。

~ 数组的 splice (1, 2, "牛魔王") 方法:删除数组中的指定元素。该方法会改变原数组,将指定元素从原数组中删除,被删除的元素作为返回值。第一个参数表示开始位置的索引,第二个参数表示删除的数量。第三个及以后的参数可以传递一些新的元素,它们将会自动插入到开始位置索引的前面。

去重练习

~ 数组的 concat ( ) 方法:可以连接两个或多个数组,并将新的数组返回。该方法不会对原数组产生影响。

~ 数组的 join ( ) 方法:该方法可以将数组转换成一个字符串,并将新的数组返回。该方法不会对原数组产生影响。在 join ( ) 中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符。如果不指定连接符,则默认用逗号。

 

~ 数组的 reverse ( ) 方法:用来反转数组。该方法会直接修改原数组。

~ 数组的 sort ( ) 方法:对数组中的元素进行排序。默认按照 Unicode 编码进行排序,会影响原数组。

~ 我们可以自己指定排序的规则:在 sort 中添加一个回调函数,定义两个形参,浏览器将会分别使用数组中的元素作为实参去调用回调函数。使用哪个元素调用不确定,但是肯定的是在数组中 a 一定在 b 前面。浏览器会根据回调函数的返回值来决定元素的顺序,如果返回一个大于 0 的值,则元素会交换位置,如果小于 0 的值,则元素位置不变。如果返回等于 0 的值,也不交换位置。如果需要生序排列 则返回 a-b ,否则返回 b-a 。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值