一、选择题
- 1.以下哪种语句不能创建数组?( )
A. var myarray = new Array;
B. var myarray = new Array(5);
C. var myarray=new Array(”hello” ,”hi”, “greetings”);
D. var myarray = new Array[10];
D - 2.不是合法创建数组的语句是( )
A. var myarray = [ 1.1, true, “a”, ];
B. var myarray = [];
C. var myarray = {};
D. var myarray = new Array();
C - 3.使用以下语句声明的数组:var undefs = [,,]; 包含多少个元素( )
A. 1
B. 2
C.3
D. 0
B - 4.以下哪条语句将正确访问cool数组中的第5个元素( )
A. cool[5]
B. cool(5)
C. cool[4]
D. cool(4)
C - 5.Array对象的哪条属性将返回表示数组长度的数值( )
A. length属性
B. getLength属性
C. size属性
D. getsize属性
A - 6.有数组a = [],执行a[1000] = 0 之后,数组的长度是( )
A. 1000
B. 1001
C. 999
D. 0
B - 7.Object.defineProperty(a, “length”, {writable: false}) 语句的含义是( )
A. 设置length属性
B. 为a数组定义了length属性
C. 让length属性只读
D. 让length属性不可配置
C - 8.对添加数组元素的方法的表述,不正确的是( )
A. 为数组的新索引赋值
B. 使用push()方法在数组末尾增加一个或多个元素
C. 使用shift()方法在数组开始增加一个或多个元素
D. 使用splice()方法插入元素
C - 9.对删除数组元素的方法的表述,不正确的是( )
A. 使用delete运算符来删除数组元素
B. 有pop()方法从数组末尾弹出元素
C. 使用unshift()方法在数组开始删除一个或多个元素
D. 设置length属性为一个新的期望长度来删除数组尾部的元素
C - 10.将数组中所有元素都转化为字符串并连接在一起的方法是( )
A. concat()方法
B. join()方法
C. splice()方法
D. slice()方法
B - 11.有数组var a = [33, 4, 1111, 222]; 执行 a.sort()的结果是( )
A. 33, 4, 1111, 222
B. 33-4-1111-222
C. 1111, 222, 33, 4
D. 4, 33, 222, 1111
C - 12.有数组var a = [1,2,3]; 执行 a.concat([4,5],[6,7])的结果是( )
A. [1,2,3,4,5,6,7]
B. [1,2,3, [4,5],[6,7]]
C. [1,2,3,4,5,[6,7]]
D. [1,2,3,[4,5],6,7]
A - 13.有数组var a = [1,2,3,4,5]; 执行a.slice(-3,-2);的结果是( )
A. [1,2,3]
B. [4, 5]
C. [2,3,4]
D. [3]
D - 14.有数组var a = [1,2,3,4,5,6,7,8]; 执行
a.splice(4);
a.splice(1,2);
之后,a的结果是( )
A. [2,3]
B. [1,4]
C. [1,2]
D. [7,8]
B - 15.有代码:
var data = [1,2,3,4,5];
data.forEach(function(value) { sum += value; });
sum的结果是( )
A. 1
B. 5
C. 3
D. 15
D - 16.有代码:
a = [1, 2, 3];
b = a.map(function(x) { return x*x; });
b的结果是( )
A. 1,2,3
B. 1,4,9
C. [1,4,9]
D. 6
C - 17.有代码:
var a = [5, 4, 3, 2, 1];
b = a.filter(function(x,i) { return i%2==0 });
b的结果是( )
A. [4,2]
B. [5,3,1]
C. [5,4,3]
D. [3,2,1]
B - 18.有代码:
a = [1,2,3,4,5];
a.every(function(x) { return x % 2 === 0; })的结果是( )
A. [2,4]
B. [5,3,1]
C. true
D. false
D - 19.有代码:
a = [1,2,3,4,5];
a.some(function(x) { return x % 2 === 0; })的结果是( )
A. [2,4]
B. [5,3,1]
C. true
D. false
C - 20.代码 a.reduce(function(x,y) { return (x>y)?x:y; }) 的作用是( )
A. 求最小值
B. 求最大值
C. 求平均数
D. 求和
B
二、编程题
- 1.实现遍历数组,获得键值对的代码(for循环和for…in循环)
var keys = Object.keys(o); // 获得o对象属性名组成的数组
var values = [] // 在数组中存储匹配属性的值
for(var i = 0; i < keys.length; i++) { // 对于数组中每个索引
var key = keys[i]; // 获得索引处的键值
values[i] = o[key]; // 在values数组中保存属性值
}
循环的优化:
for(var i = 0, len = keys.length; i < len; i++) {
// 循环体仍然不变
}
for(var index in sparseArray) {
var value = sparseArray[index];
//此处可以使用索引和值做一些事情
} - 2.实现以下3个功能的代码:
(1)跳过null、undefined和不存在的元素;
(2)跳过undefined和不存在的元素;
(3)跳过不存在的元素。
for(var i = 0; i < a.length; i++) {
if (!a[i]) continue; // 跳过null、undefined和不存在的元素
// loop body here
}
for(var i = 0; i < a.length; i++) {
if (a[i] === undefined) continue; // 跳过undefined和不存在的元素
// 循环体
}
for(var i = 0; i < a.length; i++) {
if (!(i in a)) continue ; // 跳过不存在的元素
// 循环体
} - 3.用字符串的prototype属性添加生成重复的字符串的方法
if (!String.repeat) {
String.prototype.repeat = function(l){
return new Array(l+1).join(this);
}
} - 4.实现一个函数,在数组中搜索指定的值并返回包含所有匹配的数组索引的一个数组
//在数组中查找所有出现的x,并返回一个包含匹配索引的数组
function findall(a, x) {
var results = [], //将会返回的数组
len = a.length, //待搜索数组的长度
pos = 0; //开始搜索的位置
while(pos < len) { //循环搜索多个元素…
pos = a.indexOf(x, pos); //搜索
if (pos === -1) break; //未找到,就完成搜索
results.push(pos); //否则,在数组中存储索引
pos = pos + 1; //并从下一个位置开始搜索
}
return results; //返回包含索引的数组
} - 5.实现一个判断是否是数组的函数
var isArray = Function.isArray || function(o) {
return typeof o === “object” && Object.prototype.toString.call(o) === “[object Array]”;
}; - 6.编写一个函数unique,去掉数组中的重复项。例如:
数组:array = [“aa”,”bb”,”aa”,”cc”,”dd”,”bb”];
返回:array = [“aa”,”bb”,”cc”,”dd”];
转载请注明:陈童的博客 » JavaScript数组的练习题