码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript数组实战小练习

时间:2017-08-16 00:49:30      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:span   array   target   上进   tail   duplicate   obj   方法   tin   

1.找出元素在数组中的位置。

1 function indexOf(arr, item) {
2     return arr.indexOf(item);
3 }
4 console.log("3在数组[1,2,3,4]中的位置:"+ indexOf([1,2,3,4],3));

2.计算数组中元素的和。

 1 function sum(arr) {
 2     var all = 0;
 3     for(var i = 0; i < arr.length; i++){
 4         if(typeof arr[i] == "number"){
 5             all += arr[i];
 6         }
 7     }
 8     return all;
 9 }
10 console.log("数组元素求和:"+ sum([1,2,3]));

3.移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组。

 1 function remove(arr,item){
 2     var a = [];
 3     for(var i=0; i<arr.length; i++){
 4         if(arr[i] != item){
 5             a.push(arr[i]);
 6         }
 7     }
 8     return a;
 9 }
10 console.log(remove([1,2,2,3,4,2,4,3,3,3,2],2));

4.移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回。

 1 function removeWithoutCopy(arr,item){
 2      for(var i=0; i<arr.length; i++){
 3              if(arr[i] == item){
 4                  arr.splice(i,1); //这里的1可以理解为每遇到item就删除数组中的1个元素
 5                  i--;
 6              }
 7          }
 8      return arr;
 9  }
10 console.log(removeWithoutCopy([7,2,5,4,3,2,4,2,5,2],2));

5.在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组。

 1 /*function append(arr,item){
 2     var a = [];
 3     for(var i=0; i<arr.length; i++){
 4         a.push(arr[i]);
 5     }
 6     a.push(item);
 7     return a;
 8 }*/
 9 function append(arr,item){
10     var a = arr.slice(0); //splice()可从已有的数组中返回选定的元素:arrayObj.slice(start,end);
11     a.push(item);
12     return a;
13 }
14 console.log(append([1,2,3,4],10));

6.删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组。

1 function truncate(arr){
2     return arr.slice(0,arr.length-1);
3 }
4 console.log(truncate([1,2,3,4]));

7.在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组。

1 function prepend(arr,item){
2     var a = arr.slice(0); //unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。arrayObject.unshift(newelement1,newelement2,....,newelementX)
3     a.unshift(item);
4     return a ;
5 }
6 console.log(prepend([1,2,3,4],10));

8.删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组。

1 /*function curtail(arr){
2     var a = arr.slice(0);
3     a.shift();
4     return a;
5 }*/
6 function curtail(arr){
7     return arr.slice(1);
8 }
9 console.log(curtail([1,2,3,4]));

9.合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组。

 1 /*function concat(arr1,arr2){
 2     var a = arr1.slice(0);
 3     for(var i=0; i<arr2.length; i++){
 4         a.push(arr2[i]);
 5     }
 6     return a;
 7 }*/
 8 function concat(arr1,arr2){
 9     return arr1.concat(arr2);
10 }
11 console.log(concat([1,2,3],[‘a‘,‘b‘,‘c‘]));

10.在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组。

1 function insert(arr,item,index){
2     return arr.slice(0,index).concat(item,arr.slice(index));
3 }
4 console.log(insert([1, 2, 3, 4], ‘z‘, 2));

11.统计数组 arr 中值等于 item 的元素出现的次数。

 1 /*function count(arr,item){
 2     var cnt=0;
 3     for(var i=0; i<arr.length; i++){
 4         if(arr[i] == item){
 5             cnt++;
 6         }
 7     }
 8     return cnt;
 9 }*/
10 function count(arr,item){
11     var cnt = 0;
12     arr.forEach(function(e){
13         e==item?cnt++:0;
14     });
15     return cnt;
16 }
17 console.log(count([1, 2, 4, 4, 3, 4, 3], 4));

12.找出数组 arr 中重复出现过的元素************************************************

 1 function duplicates(arr) {
 2     //声明两个数组,a数组用来存放结果,b数组用来存放arr中每个元素的个数
 3     var a = [],b = [];
 4     //遍历arr,如果以arr中元素为下标的b元素已存在,则该b元素加1,否则设置为1
 5     for(var i = 0; i < arr.length; i++){
 6         if(!b[arr[i]]){
 7             b[arr[i]] = 1;
 8             continue;
 9         }
10         b[arr[i]]++;
11     }
12     //遍历b数组,将其中元素值大于1的元素下标存入a数组中
13     for(var i = 0; i < b.length; i++){
14         if(b[i] > 1){
15             a.push(i);
16         }
17     }
18     return a;
19 }
20 console.log(duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]));

13.为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组。

 1 /*function square(arr){
 2     var a = arr.slice(0),
 3         b = [];
 4     for(var i=0; i<arr.length; i++){
 5         b.push(a[i]*a[i]);
 6     }
 7     return b;
 8 }*/
 9 /*// 使用map
10 function square(arr) {
11     return arr.map(function(e) {
12         return e * e;
13     })
14 }*/
15 const square = arr => arr.map(e => e* e);
16 console.log(square([1,2,3,4]));

14.在数组 arr 中,查找值与 item 相等的元素出现的所有位置********************************

1 function findAllOccurrences(arr,target){
2     var a=[];
3     arr.forEach(function(val,index){
4         val !== target || a.push(index);
5     });
6 
7     return a;
8 }
9 //console.log(findAllOccurrences(‘abcdefabc‘,target)); //为什么加上这句就错了呢?

 __proto__:Array[0]

技术分享

JavaScript数组实战小练习

标签:span   array   target   上进   tail   duplicate   obj   方法   tin   

原文地址:http://www.cnblogs.com/qingruozhu/p/7368430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!