JavaScript數組實戰小練習
阿新 • • 發佈:2017-08-16
dex continue strong .... sta def end ima 次數
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數組實戰小練習