Javascript之高级数组API的使用实例

JS代码中我们可以根据需求新建新的对象解决问题的同时,也有一些常用的内置对象供我们使用,我们称之为API,本篇文章只是对数组部分进行了练习。

例一:伪数组,不能修改长短的数组(所以没办法清零),可以修改元素,代码实现如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
fn(1,2);
   fn(1,2,3,4,5,6);
   fn(1,2,4,5,7,9,4);
   function fn(a,b){
   arguments[0]=0;
   console.log(arguments);
   arguments.push(1);
   console.log(arguments instanceof Array);
   console.log(arguments.length); //实参个数
   console.log(fn.length); //形参个数
   console.log(arguments.callee); //整个函数,包括注释
   }
</script>

伪数组打印的是实参,而普通函数调用打印的是形参,并且打印它的函数类型,我们发现它的类型显示并不是数组。

例二:将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现

方法一:不利用内置对象,进行字符串拼接,由于第一个元素前没有特殊符号,首先将其赋值后,循环从下一个元素开始遍历

?
1
2
3
4
5
6
7
8
<script>
var arr=[ "刘备" , "张飞" , "关羽" ];
var str=arr[0];
for ( var i=1;i<arr.length;i++){
   str+= "|" +arr[i];
}
console.log(str);
</script>

方法二:使用内置对象直接改变间隔符号

?
1
2
3
4
5
<script>
var arr=[ "刘备" , "张飞" , "关羽" ];
var str=arr.join( "|" );
console.log(str);
</script>

两种方法进行对比,我们发现第一种方法使之产生了大量内存,导致内存浪费情况,从此看出对我们来说内置对象的使用帮我们解决了内存浪费的缺点。

例三:将一个字符串js数组的元素的顺序进行反转。["a","b","c","d"] ->["d","c","b","a"]。使用两种种方式实现。

方法一:之前文章介绍过的方法

?
1
2
3
4
5
6
7
8
<script>
var str1=[ "a" , "b" , "c" , "d" ];
var str2=[];
for ( var i=0;i<str1.length;i++){
   str2[str1.length-i-1]=str1[i];
}
console.log(str2);
</script>

方法二:直接使用内置对象reverse()解决

?
1
2
3
4
<script>
var str1=[ "a" , "b" , "c" , "d" ];
console.log(str1.reverse());
</script>

例四:工资的数组[1500,1200,2000,2100,1800],把工资超过2000的删除

使用内置对象filter()实现题目需求。

?
1
2
3
4
5
6
7
8
9
10
<script>
var arr=[1500,1200,2000,2100,1800];
var arr1=arr.filter( function (element,index,array){
   if (element<=2000){
     return true ;
   }
   return false ;
})
console.log(arr1);
</script>

例五:["c","a","z","a","x","a"]找到数组中每一个元素出现的次数

由于题目给出字符形式,让我们求出的相应字符的个数为数字形式,这让我们应用json更方便问题解决,将题目给出的字符作为“键”,将次数作为“键值”,来判断数组中的元素,在json中是否存在属性值,如果存在,在原有基础上加上1;如果不存在直接赋值为1。

?
1
2
3
4
5
6
7
8
9
10
11
12
<script>
var arr=[ "c" , "a" , "z" , "a" , "x" , "a" ];
var json={};
for ( var i=0;i<arr.length;i++){
     if (json[arr[i]]!==undefined){
       json[arr[i]]+=1;
     } else {
       json[arr[i]]=1;
     }
}
console.log(json);
</script>

例六:编写一个方法 去掉一个数组的重复元素

方法一:新建数组,将原数组第一个元素push进入新数组。遍历原数组的每一个元素使之在新数组每一个元素中都不存在(嵌套两层for循环),就push进入原数组,否则就跳出新数组循环,进入原数组的下一个元素循环。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
var arr=[3,2,4,5,5,3,5,568,4,21,7];
var arr1=fn(arr);
function fn(array){
   var arr2=[];
   arr2.push(array[0]);
   abc: for ( var i=0;i<array.length;i++){
     for ( var j=0;j<arr2.length;j++){
       if (arr2[j]==array[i]){
         continue abc;
       }
     }
     arr2.push(array[i]);
   }
   return arr2;
}
console.log(arr1);
</script>

方法二:创建一个新数组,循环遍历,只要新数组中有旧数组的值,就不要在添加。每次都要判断新数组中是否有旧数组的值,保证旧数组的元素和新数组中每一个都不相等,则赋值给新数组的下一元素的值。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script>
var arr=[1,2,3,4,5,2,3,4];
console.log(arr);
console.log(fn(arr));
function fn(array){
   var newArr=[];
   for ( var i=0;i<array.length;i++){
     var bool= true ;
     for ( var j=0;j<newArr.length;j++){
       if (array[i]===newArr[j]){
         bool= false ;
       }
     }
     if (bool){
       newArr[newArr.length]=array[i];
     }
   }
   return newArr;
}
</script>

转载于:https://www.cnblogs.com/good10000/p/10612801.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值