数组部分

117 阅读3分钟

利用new Array() 创建数组元素

// var arr = new Array() //表示创建了一个新数组 
        // var arr = new Array(2); //这个2表示 这个数组的长度是2,里面有2个空元素
        // var arr = new Array(2,3);//等价于[2,3] 这样写 表示里面有2个数组元素2和3
        // console.log(arr);


// 检测是否为数组
        //正常案例
        function str(arr) {
            var newArr = [];
            for(i=arr.length-1;i>=0;i--) {
                   newArr[newArr.length] = arr[i];
            }
            return newArr;
        }
        console.log(str([3,2,1]));
        //如果传递回去的不是一个数组的话,就会原封不动的把newArr传递回来,所以这时候需要用Array.isArray() 来判断是否是数组  是数组就true 不是false
        function str1(arr) {
            if(Array.isArray(arr)){
                var newArr = [];
            for(i=arr.length-1;i>=0;i--) {
                   newArr[newArr.length] = arr[i];
            }
            return newArr;
            }else {
                return '请传递一个数组'
            }
        }
        console.log(str1(1,2,3));

添加删除数组元素

1.push()   在数组的末尾添加一个或者多个数组元素  
push()中直接写数组元素就好,返回值是添加元素后数组的长度
var arr = [1,2,3];
arr.push('pink');
console.log(arr)  //数组变成[1,2,3,'pink']


2.unshifl() 在数组的前面添加一个或多个数组元素
返回值和push()一样
var arr = [1,2,3];
arr.unshifl('pink');
console.log(arr)  //数组变成['pink',1,2,3,'pink']

3.pop()  删除数组最后一个元素一次只能删除一个
中间是不写参数的,返回值是被删除的元素
arr.pop();


4.shifl() 删除数组第一个元素一次只删除一个
和上面一样
arr.shifl();


数组排序

1.reverse();翻转数组 不写参数
arr.reverse();

2.sort(); 冒泡排序,不写参数
arr.sort();
这里有个注意的地方,如果是双数以上的话(10以及以上的数字)这个排序就会出现一些问题,详细可看数据类型部分的拓展小知识

这时候可以这么写,至于原理,因为写法固定,记住就好
arr.sort(function(a,b) {
return a - b;  //升序
return b - a;  //降序
});


查找数组索引号

返回数组索引号方法 indexof(数组元素)  返回值是该数组元素的索引号  它只返回第一个满足条件的索引号  如果在数组中找不到该数组元素就返回-1
        var arr = ['pin','red'];
        console.log(arr.indexOf('red'));
        
// 数组去重(重点案例)
// 核心思路就是遍历旧数组,然后用新数组查询旧数组里的元素,如果等于-1就代表新数组中没有这个元素,添加进去,不等于-1就不用添加
        function str(arr) {
            var newarr = [];
            for(i = 0;i<arr.length;i++) {
             if(newarr.indexOf(arr[i]) === -1) {
                 newarr.push(arr[i]);
             }
        }
        return newarr;
        }
        var re = str(['c','a','b','c','d','a']);
        console.log(re);


数组转换成字符串

  // 1.toString()
        var arr = [1,2,3];
        console.log(arr.toString()); //返回123;
        // 2.join(间隔符);
        var arr1 = ['red','pink','blue'];
        console.log(arr1.join('-'));

// 课下查询
        // 1.concat() 连接两个或多个数组  返回一个新数组
        var arr = [1];
        var arr1 = [2];
        console.log(arr.concat(arr1));
        // 2.splice()  数组删除splice(从第几个开始,要删除几个)  返回值是被删除元素的新数组 会影响原来的数组
        var arr = [1,2,3,4,5,6,7,8];
        console.log(arr.splice(3,2));//4,5
        console.log(arr);//1,2,3,6,7,8

基本包装类型 String number Boolean这三种

    var str = 'anst';
    console.log(str.length);
    //对象才有属性和方法  复杂数据类型
    //简单数据类型为什么会有length属性呢?
    //基本包装类型:就是把简单数据类型包装成复杂数据类型  下面就是js内部的操作
    // (1)把简单数据类型包装成复杂数据类型
    var temp = new String('anst');
    // (2)把临时变量的值给str
    str = temp;
    // (3)销毁临时变量
    temp = null;

课堂案例:

// 课堂案例:o出现的位置和次数
        var str = 'abcoefoxyozzopp';
        var index = str.indexOf('o');
        var sum = 0;
        while(index != -1) {
            console.log(index);
            index = str.indexOf('o',index+1);
            sum++;
        }
        console.log(sum);


根据位置返回字符

//    1.charAt(索引号) 根据位置返回字符
var str = 'andr';
console.log(str.charAt(3));
// 2.charCodeAt(索引号) 获取指定位置处字符的ascii码   用来判断用户按了哪个箭
console.log(str.charCodeAt(0));//a =97
//3.str[索引号] h5新增
console.log(str[0]); //a

// 字符串操作
        // 1.截取字符串
        // substr(截取开始的问题,截取几个字符);
        // var str1 = '川田来了春天来了';
        // console.log(str1.substr(2,2));
        // 2.替换字符 replace('被替换的的字符','替换的字符')
        // var str = 'pbooo';
        // console.log(str.replace('o','*'));
        // // 3.字符转换为数组 split('分隔符')
        // var str1 = 'red,pink,blue';
        // console.log(str1.split(','));