js基础(数组)

 

对象的分类:内建对象、宿主对象、自定义对象

普通对象使用属性名进行访问,数组对象使用索进行访问

创建一个数组:var arr = new Array();

使用typeof检查一个对象,会返回一个object

向数组中添加一个元素:arr[0] = 1;

对于连续的数组,使用length可以获取到数组的长度(元素的个数),对于非连续型数组,使用length会获取到数组的最大索引+1,尽量不要使用非连续型数组

修改length,arr.length = 5、如果修改后的length大于原长度,则多出来的部分会空出来,如果修改的length小于原长度,则多于的长度户会直接删除

 

使用字面量创建数组:var arr = [13,"abc", true, 53.2];

使用构造函数创建数组的时候,也可以同时添加元素,将要添加的元素作为构造函数的参数进行传递    var arr = new Array(343,"jack", true, 45.3);

 

 

push()//该方法可以向数组的末尾添加一个或者多个元素,并返回数组的新长度

 

var arr = new Array(343,"jack", true, 45.3);
var result = arr.push("Tom",false);
console.log(arr);//[343, "jack", true, 45.3, "Tom", false]
console.log(result);//6

 

pop()//该方法可以删除数组的最后一个元素,并将删除的元素作为返回值进行返回

var arr = new Array(343,"jack", true, 45.3);
var result = arr.push("Tom",false);
console.log(arr);//[343, "jack", true, 45.3, "Tom", false]
console.log(arr.pop());//false
console.log(arr);//[343, "jack", true, 45.3, "Tom"]

unshift()  //向数组开头添加一个或者多个元素,并返回数组的新长度,其他元素自动进行调整

var arr = new Array(343,"jack", true, 45.3);
var result = arr.unshift("新增元素1","新增元素2");
console.log(arr);//["新增元素1", "新增元素2", 343, "jack", true, 45.3]

shift()  //删除元素的个数,并将删除的元素返回

var arr = new Array(343,"jack", true, 45.3);
var result = arr.unshift("新增元素1","新增元素2");
console.log(arr);//["新增元素1", "新增元素2", 343, "jack", true, 45.3]
result = arr.shift();
console.log(arr);//["新增元素2", 343, "jack", true, 45.3]
console.log(result);//新增元素1

 

forEach()需要一个函数作为参数,这种函数称为回调函数  //这个方法只支持IE8以上的浏览器

var arr = new Array(343,"jack", true, 45.3);
arr.forEach(function(value , index , obj){
                    console.log("index:" + index + "    value:" + value+ "    obj:" + obj);
          });

//输出结果:
index:0    value:343     obj:343,jack,true,45.3
index:1    value:jack    obj:343,jack,true,45.3
index:2    value:true    obj:343,jack,true,45.3
index:3    value:45.3    obj:343,jack,true,45.3

 

slice():从数组中提取指定的元素,这个方法不会改变元素数组,而是将截取的元素封装到一个新的数组进行返回

/*         - 参数:
 *                  1.截取开始的位置的索引,包含开始索引
 *                  2.截取结束的位置的索引,不包含结束索引
 *                            - 第二个参数可以省略不写,此时会截取从开始索引往后的所有元素
 *                  - 索引可以传递一个负值,如果传递一个负值,则从后往前计算
 *                            -1 倒数第一个
 *                            -2 倒数第二个
 */
var arr = [343,"jack", true, 45.3, false];                  
var result = arr.slice(1,4);
console.log(result);//["jack", true, 45.3]
result = arr.slice(3);
console.log(result);//[45.3, false]
result = arr.slice(1,-2);
console.log(result);//["jack", true]

 

splice():用于删除数组中指定的元素,会影响原数组,将删除的元素返回

          /*        - 参数:
           *                  第一个,表示开始位置的索引
           *                  第二个,表示删除的数量
           *                  第三个及以后。。
           *                            可以传递一些新的元素,这些元素将会自动插入到开始位置索引前边
           *        
           */
var arr = [343,"jack", true, 45.3, false];                  
var result = arr.splice(3,1,"Tom","Marry","Bob");                              
console.log(arr);//[343, "jack", true, "Tom", "Marry", "Bob", false]
console.log(result);//[45.3]
var arr = [343,"jack", true, 45.3, false];                  
var result = arr.splice(3,0,"Tom","Marry","Bob");                              
console.log(arr);// [343, "jack", true, "Tom", "Marry", "Bob", 45.3, false]
console.log(result);//[]

 

去除数组中的元素

//创建一个数组
var arr = [1,2,3,2,2,1,3,4,2,5];

//去除数组中重复的数字
//获取数组中的每一个元素
for(var i=0 ; i<arr.length ; i++){
          //console.log(arr[i]);
          /*获取当前元素后的所有元素*/
          for(var j=i+1 ; j<arr.length ; j++){
                    //console.log("---->"+arr[j]);
                    //判断两个元素的值是否相等
                    if(arr[i] == arr[j]){
                              //如果相等则证明出现了重复的元素,则删除j对应的元素
                              arr.splice(j,1);
                              //当删除了当前j所在的元素以后,后边的元素会自动补位
                              //此时将不会在比较这个元素吧,我需要在比较一次j所在位置的元素
                              //使j自减
                              j--;
                    }
          }
}

console.log(arr);

 

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

var arr1 = [1234,3454,5656,454];
var arr2 = ["Tom","Jacky","Marry"];
var arr3 = [true, false];
var arr = arr1.concat(arr2,arr3);
console.log(arr);//[1234, 3454, 5656, 454, "Tom", "Jacky", "Marry", true, false]
console.log(arr1);//[1234, 3454, 5656, 454]
console.log(arr2);//["Tom", "Jacky", "Marry"]
console.log(arr3);//[true, false]

 

join()   将一个数组转换成一个字符串,不会对原数组产生影响,在方法中指定一个字符串作为参数(连接符),如果不指定,默认是,,如果不想使用连接符,则用""

var arr = ["Tom","Jacky","Marry"];
console.log(arr);//["Tom", "Jacky", "Marry"]
console.log(arr.join());//Tom,Jacky,Marry
console.log(arr.join(""));//TomJackyMarry
console.log(arr.join("##"));//Tom##Jacky##Marry

 

reverse()数组反转,会改变原数组

var arr = ["Tom","Jacky","Marry"];
console.log(arr.reverse());// ["Marry", "Jacky", "Tom"]

 

sort()  数组排序(按照Unicode进行排序),影响结果

var arr = ["Tom","Jacky","Marry"];
console.log(arr.sort());// ["Jacky", "Marry", "Tom"]
arr = ["b","d","e","a","c"];
console.log(arr.sort());//["a", "b", "c", "d", "e"]
arr = [5,11,2,1,3,6,8,7];
console.log(arr.sort());//[1, 11, 2, 3, 5, 6, 7, 8]

浏览器根据回调函数决定元素的位置,如果返回值大于0,两数交换位置,如果返回值小于0,位置不变

arr = [5,11,2,1,13,6,8,7];
                              
arr.sort(function(a,b){          
          //前边的大
         if(a > b){
                    return -1;
          }else if(a < b){
                    return 1;
          }else{
                    return 0;
          }         
          //升序排列
          //return a - b;        
          //降序排列
          return b - a;         
});

console.log(arr);

 

 

 

 

      

 

posted @ 2018-05-09 21:52  coderlzb  阅读(127)  评论(0编辑  收藏  举报