赞
踩
第1关:数组的创建、读写和长度
任务描述
已知两个数组array1和array2,参数a是一个整数,先判断a的值与数组array1的长度值相等,如果相等,返回数组array1的最后一个元素,反之,则返回数组array2的最后一个元素。
过关帮助
数组的创建
创建数组有两种方法,一是使用数组字面量,简单来说就是在[]之中列出数组的所有元素:
var numberArray = [1,2,3,4,5];//数字数组
var stringArray = ["java","script","edu","coder"];//字符串数组
var mixArray = [1,2,"java",true,6.6];//混合数组
如上,各元素之间用,隔开。JavaScript中数组的元素可以是不同的数据类型,如上面的第三个数组。
创建数组的第二种方法是新建一个Array对象的实例,如:
var myArray = new Array();//创建一个初始为空的数组
var lengthMixArray = new Array(6);//创建一个长为6的数组
这种情况下可以设置数组的长度(即数组中元素的个数),也可以不设置。
数组元素的读取和写入
数组元素的读取和写入在形式上相似,都是用赋值符号连接的两个表达式。
读取时,存放读入值的变量在左边,数组元素在右边:
var readArray = [1,3,"js",true,2.22];
var read = readArray[0];//读取第一个元素到变量read中
写入时,数组元素在左边,待写值在右边:
var writeArray = [1,3,"js",true,2.22];
writeArray[0] = 2;//在第一个元素的位置写入2
console.log(writeArray[0]);//原来的1已经被覆盖,输出2
数组长度
数组长度指数组中元素的个数,等于最大索引值加1,数组的length属性即数组的长度。
var arrayLength = [1,"js",true];
console.log(arrayLength.length);//输出3
数组的长度也可以写入,当写入的值小于数组的实际长度时,数组会被删除一部分。大于实际长度时,数组会在尾部添加一些空的区域。
arrayLength.length = 2;
console.log(arrayLength);//输出[1,"js"]
编程内容
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*********/
}
第2关:数组元素的增减
任务描述
将数组testArray的最后a个元素移动到最前面,这a个元素之间的相对位置不变,其余元素之间的相对位置不变;
比如将数组[1,2,3,4,5]最后2个元素移动到最前面,数组变为[4,5,1,2,3];
返回移动结束后数组在索引b处的元素。
过关帮助
数组元素的增加
在JavaScript中,为数组增加元素可以在数组头部(索引最小处)或者尾部进行,可以使用数组的方法或者直接使用运算符。
在尾部添加元素
最直观的方法是直接给当前尾部元素的后一个位置赋值。
var numberArray = [12,23,34,45];
numberArray[numberArray.length] = 56;
console.log(numberArray);//输出[12,23,34,45,56]
第二种方法是使用push()函数,往数组的末尾添加一个或多个元素,参数是要添加的元素,返回数组长度。
//利用push()方法在数组尾部添加元素
var numberArray = [12,23,34,45];
var newLength = numberArray.push(56);
console.log(newLength);//输出5
console.log(numberArray);//输出[12,23,34,45,56]
在头部添加元素
unshift()方法在数组的头部添加元素,并返回数组新的长度,其余元素自动向索引大的方向移动。
var sArray = ["ja","va","script"];
var newLength = sArray.unshift("he","llo");
console.log(newLength)//输出5
console.log(sArray);//输出["he","llo","ja","va","script"];
数组元素的删除
删除也能在数组头部(索引值小)或者尾部进行。
在尾部删除元素
直接修改数组长度为更小的值。
var array = [1,2,true,"hello"];
array.length = 3;//索引最大的元素被删除
console.log(array);//输出[1,2,true]
第二种方法是使用delete运算符。delete运算符后接要删除的元素,但是删除后,会有一个空占位符,所以数据的长度保持不变。如:
var dArray = [11,22,33,44,55];
delete dArray[4];//删除索引最大的元素
console.log(dArray);//输出[11,22,33,44]
console.log(dArray.length); //长度为5
第三种方法是使用pop(),一次删除一个,并返回被删除的元素。
//利用pop()方法在数组尾部删除元素
var numberArray = [3,4,5,6,7];
var deletedNumber = numberArray.pop();
console.log(deletedNumber);//输出被删除的元素7
console.log(numberArray);//删除后的数组为[3,4,5,6]
在头部删除元素
有unshift(),自然有shift(),shift()的作用是删除数组头部一个元素并返回该元素,然后所有元素往索引值小的方向移动一位。
建议记住shift单词的意思是:删除,去掉。
var dArray = [11,22,33,44,55];
console.log(dArray.shift());//输出11,11被从数组中删除
console.log(dArray);//输出[22,33,44,55]
编程内容
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*********/
}
第3关:数组的遍历和多维数组
任务描述
将一维数组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 arr1 = new Array(a);
for(var i = 0;i < a;i++){
arr1[i] = new Array(b);
}
var count = 0;
for(var i = 0;i < a;i++){
for(var j = 0;j < b;j++){
arr1[i][j] = arr[count++];
}
}
return arr1;
/*********end*********/
}
第4关:数组的常用方法
任务描述
获取字符串a在数组myArray的所有位置并组成一个位置数组;
获取字符串b在数组myArray的所有位置并组成一个位置数组;
合并这两个数组然后返回合并后的数组。
编程内容
function mainJs(myArray) {
myArray = myArray.split(",");
//请在此处编写代码
/*********begin*********/
var a = new Array();
var i = 0,j = 0;
while(myArray.indexOf("a",i) != -1)
{
a[j] = myArray.indexOf("a",i);
i = a[j] + 1;
j++;
}
var b = new Array();
var i1 = 0,j1 = 0;
while(myArray.indexOf("b",i1) != -1)
{
b[j1] = myArray.indexOf("b",i1);
i1 = b[j1] + 1;
j1++;
}
var d = a.concat(b);
return d;
/*********end*********/
}
第5关:数组的应用——内排序
任务描述
函数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 mi = new Array();
var aLength = arr.length;
var temp;
var max = arr[0];
var maxIndex = 0;
for(var i = 0;i < aLength - 1;i++) {
for(var j = 1;j < aLength - i;j++) {
if(arr[j] > max) {
max = arr[j];
maxIndex = j;
}
}
mi[i] = maxIndex;
temp = arr[aLength-i-1];
arr[aLength - i - 1] = arr[maxIndex];
arr[maxIndex] = temp;
var max = arr[0];
var maxIndex = 0;
}
return mi;
/*********end*********/
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。