JavaScript数组实战小练习
Posted 卿若竹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript数组实战小练习相关的知识,希望对你有一定的参考价值。
1.找出元素在数组中的位置。
1 function indexOf(arr, item) { 2 if(Array.prototype.indexOf){ //判断浏览器是否支持indexOf方法 3 return arr.indexOf(item); 4 }else{ 5 for(var i=0; i<arr.length; i++){ 6 return i; 7 } 8 } 9 return -1; 10 } 11 console.log("3在数组[1,2,3,4]中的位置:"+ indexOf([1,2,3,4],3)); //3在数组[1,2,3,4]中的位置:2
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 function sum(arr){ 11 return eval(arr.join("+")); 12 } 13 console.log("数组元素求和:"+ sum([1,2,3])); //数组元素求和:6
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,3,4,2,3],2)); //[ 1, 3, 4, 3 ]
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--;//splice(i,1)删除一个元素,必须让i值减一,否则会跳过下一个元素 6 } 7 } 8 return arr; 9 } 10 console.log(removeWithoutCopy([1,2,3,4,2,3],2));//[ 1, 3, 4, 3 ]
5.在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组。
1 function append(arr,item){ 2 var a = arr.slice(0);//splice()可从已有的数组中返回选定的元素:arrayObj.slice(start,end); 3 a.push(item); 4 return a; 5 } 6 console.log(append([1, 2, 3, 4], 10)); //[ 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]));//[ 1, 2, 3 ]
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)); //[ 10, 1, 2, 3, 4 ]
1 function prepend(arr,item){ 2 return [item].concat(arr); 3 } 4 console.log(prepend([1,2,3,4],10)); //[ 10, 1, 2, 3, 4 ]
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])); //[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 }*/
1 function concat(arr1,arr2){ 2 return arr1.concat(arr2); 3 } 4 console.log(concat([1, 2, 3, 4], [\'a\', \'b\', \'c\', 1]));//[ 1, 2, 3, 4, \'a\', \'b\', \'c\', 1 ]
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));//[ 1, 2, \'z\', 3, 4 ]
11.统计数组 arr 中值等于 item 的元素出现的次数。
1 function count(arr,item){ 2 var cnt=0; 3 for(var i=0; i<arr.length; i++){ 4 arr[i] == item ? cnt++ : 0; 5 } 6 return cnt; 7 } 8 console.log(count([1, 2, 4, 4, 3, 4, 3], 4));//3
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数组实战小练习的主要内容,如果未能解决你的问题,请参考以下文章