JavaScript数据结构-1.数组

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Title</title>
  6 </head>
  7 <body>
  8     <script>
  9         //数组浅复制:指向的是同一个对象,对象变化时,他们都变化。
 10         var numbers = [1,2,3];
 11         var num = numbers;
 12         console.log(num);
 13         console.log(numbers);
 14         numbers[1] = 4;
 15         console.log(num[1]);
 16 
 17         //数组深复制:把数组中的每个元素都复制到新数组中
 18         function Copy(arr1,arr2){
 19             for(var i=0;i<arr1.length;i++){
 20                 arr2[i]=arr1[i];
 21             }
 22             return arr2;
 23         }
 24         
 25         //数组几个可变方法:  unshift() 添加元素到数组开头    push()  添加元素到数组尾  pop()删除最后一个元素  shift()  删除数组第一个元素
 26         
 27         var arr = [1,2,3,4,5];
 28         arr.unshift(6);
 29         console.log("unshift",arr);
 30         var arr = [1,2,3,4,5];
 31         arr.shift();
 32         console.log("shift",arr);
 33         var arr = [1,2,3,4,5];
 34         arr.push(6);
 35         console.log("push",arr);
 36         
 37         var arr = [1,2,3,4,5];
 38         arr.pop();
 39         console.log("pop",arr);
 40         
 41         
 42         
 43         //数组排序    sort()  和  sort(function) ,reverse();
 44         function compare(num1,num2){
 45             return num1-num2;
 46         }
 47         var arr = [1,3,100,6,50];
 48 //        arr.sort();//这个排序默认以字符串的形式排列  所以数字有误差  可以加个比较函数  实现数字排序。
 49         arr.sort(compare);
 50         console.log("sortarr",arr);
 51         
 52         arr .reverse();
 53         console.log(arr,"reverse");
 54         
 55         //返回索引   :  indexOf()  和 lastIndexOf()
 56         var arr = [1,2,2,3];
 57         console.log(arr.indexOf(2));
 58         console.log(arr.indexOf(4));   // 找不到 返回-1
 59         console.log(arr.lastIndexOf(2));  // 返回数组中跟参数相同的所有元素中的最后一个索引。
 60         
 61         //数组字符串表示  join()  和  toString()方法
 62         var  arr = ['zhangsan','lisi','zhaowu','wangliu'];
 63         console.log(arr.join());
 64         console.log(arr.toString());  //返回的结果是一样的,逗号分隔的字符串.
 65         
 66         //数组生成数组  :concat()  splice()
 67         var arr1 = ['hello','javascript'],
 68             arr2 = ['name','class'];
 69         console.log(arr1.concat(arr2));
 70         
 71         var arr = ['hello','this',"is",'splice'];
 72          console.log(arr.splice(1,3));
 73          console.log(arr);  //切割完   数组就变成剩下的元素组成的数组
 74          
 75          
 76          //从数组中间位置添加  删除元素  :splice(a,b,value)   a :起始索引  b 要截取(删除)的元素个数   value,要添加的元素,可以是多个,依次逗号隔开。
 77          var arr= [1,2,3,100,200,4,5];
 78          arr.splice(3,2);
 79          console.log(arr);  //完成删除
 80          
 81          var arr = [1,2,3,4,5];
 82          arr.splice(3,0,100,200);  //插入的值依次逗号隔开
 83          console.log(arr);
 84         
 85         
 86         //迭代器方法
 87         //不生成新数组的: forEach(function)  接受一个函数,对每个元素进行迭代, 
 88         //             every(function) 返回一个布尔值,方法作用在每个元素上都返回true,every(function) 才返回true
 89         //             some(function)  与every(function ) 类似,但只要有一个返回true,some就返回true。
 90          //             reduce(function)   迭代累加, 也可以连接成字符串,  还可以用 reduceRight(function)方法进行反转
 91          
 92          //forEach(function)
 93         var arr = [1,2,3,4,5,6,7,8,9];
 94         function print(num){
 95             console.log(num,num*num);
 96         }
 97         arr.forEach(print);
 98         
 99         //every(function),some(function)
100         var arr = [4,5,6,7,8,9];
101         var bool = arr.some(function(num){ 
102     //  var bool = arr.every(function(num){
103             console.log(num>5);
104             return    num>5 
105         });
106         console.log(bool);
107         
108         //reduce(function)
109         var arr = [1,2,3,4];
110         function add(num1,num2){
111             return num1 + num2;
112         }
113         console.log(arr.reduce(add));  //10
114        
115        
116        //生成新数组迭代方法:map(function), filter(function)
117        //map
118        var arr = ["hello","javascript","function"];
119        function first(value){
120                return  value[0];
121        }
122        console.log(arr.map(first).join(''));
123        
124        //filter:参数函数需要返回布尔值,结果是满足条件的所有元素列表。  相当于过滤器。也可以用来过滤字符串数组。
125        var arr = [1,2,3,4,5,6,7,8];
126        var res = arr.filter(function(num){
127               return num >5
128        })
129        console.log("res",res);   //6,7,8
130        
131        //获取数组所有key值
132        var arr=new Array();
133             arr["name"] = "张三";
134             arr["age"] = "20";
135             
136             console.log(Object.keys(arr));
137     </script>
138 </body>
139 </html>
原文地址:https://www.cnblogs.com/chengyunshen/p/7191857.html