JavaScript数组的练习题

JavaScript everyinch 9282℃ 0评论

一、选择题

  • 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数组的练习题

喜欢 (20)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 大哥为什么不把答案带上呢!!
    一名“砖‘家2021-04-01 10:36 回复
  2. 无答案很难受
    鲸落2021-04-01 10:54 回复
'; } if( dopt('d_footcode_b') ) echo dopt('d_footcode'); ?>