JavaScript学习手册五:JS数组

第5关:数组的应用——内排序 本关的编程任务是补全右侧代码片段中begin至end中间的代码,具体要求如下:

函数mainJs(a)中的变量arr是一个数组,你需要对该数组进行选择排序;

返回选择排序进行过程中,在每一趟交换前,待排序子数组的最大元素的位置组成的数组;

比如对于上面相关知识中的数组[9,5,8,0,2,6],第一次交换前,最大的元素9的索引是0,第二次交换前,最大元素8的索引是2,第三次交换前最大元素6的索引是0,第四次交换前最大元素5的索引是1,第五次交换前最大元素2的索引是1,第六次交换前最大元素0的索引是0。索引需要返回的数组是[0,2,0,1,1,0]; 解决: function mainJs(a) { var arr = a.split(","); for(var i = 0;i < arr.length;i++) { arr[i] = parseInt(arr[i]); } //请在此处编写代码 /begin/ var arrv = []; var num=0; for(var i = arr.length-1;i >=0;i–) { n=arr[0]; arrv[num]=0; for(var j = 1;j <=i;j++) {//一次选择 if(arr[j] > n) { n = arr[j]; arrv[num]= j; } } var temp=arr[arrv[num]]; arr[arrv[num]]=arr[i]; arr[i]=temp; num++; } arrv.pop(); return arrv;

/*********end*********/

} nav 第4关:数组的常用方法 获取字符串a在数组myArray的所有位置并组成一个位置数组;

获取字符串b在数组myArray的所有位置并组成一个位置数组;

合并这两个数组然后返回合并后的数组。 function mainJs(myArray) { myArray = myArray.split(","); //请在此处编写代码 /begin/ var s=0; var a=new Array(); while(s<myArray.length) { s=myArray.indexOf(“a”,s); if(s!=-1) { a.push(s); s++; } else{ break; } } s=0; var b=new Array(); while(s<myArray.length) { s=myArray.indexOf(“b”,s); if(s!=-1) { b.push(s); s++; } else{ break; } } return a.concat(b); /end/ } 第3关:数组的遍历和多维数组 本关的编程任务是补全右侧代码片段中begin至end中间的代码,具体要求如下:

将一维数组arr转为a行b列的二维数组,行优先;

返回该二维数组;

具体请参见后续测试样例。 var arr = [1,2,3,4,5,6,7,8,9,0,10,11,12,13,14,15,16,17,18,19,20,21,23,22]; function mainJs(a,b) { a = parseInt(a); b = parseInt(b); //请在此处编写代码 /begin/

var murr = new Array(a); for(var i= 0;i<a;i++) { murr[i] = new Array(b); } var count =0; for(var i=0;i<a;i++) { for(var j = 0;j<b;j++) { murr[i][j] = arr[count]; count++; } } return murr;

/*********end*********/

}

第2关:数组元素的增减 将数组testArray的最后a个元素移动到最前面,这a个元素之间的相对位置不变,其余元素之间的相对位置不变;

比如将数组[1,2,3,4,5]最后2个元素移动到最前面,数组变为[4,5,1,2,3];

返回移动结束后数组在索引b处的元素;

具体请参见后续测试样例。 var testArray = [12,“java”,“js”,“c”,“c++”,24,36,“python”,“c#”,“css”]; function mainJs(a,b) { a = parseInt(a); b = parseInt(b); //请在此处编写代码 /begin/

for (var i=0;i<a;i++){ testArray.unshift(testArray .pop()); } return testArray[b];

/*********end*********/

}

第1关:数组的创建、读写和长度 本关的编程任务是补全右侧代码片段中begin至end中间的代码,具体要求如下:

已知两个数组array1和array2,参数a是一个整数,先判断a的值与数组array1的长度值相等,如果相等,返回数组array1的最后一个元素,反之,则返回数组array2的最后一个元素; var array1 = [1,2,3,“js”,4,true,“hello”]; var array2 = [true,true,“java”,2.1]; function mainJs(a) { //请在此处编写代码 /begin/ if(a==array1.length){ return array1[array1.length-1]; } else{ return array2[array2.length-1]; } /end/ }

经验分享 程序员 微信小程序 职场和发展