全部学科
Python全栈
python
NodeJS全栈
nodejs

JS对象与数组专题测试

20 题 40 分钟 难度:★

考察知识点

  • 对象字面量:对象创建语法、属性名与属性值、点语法与方括号语法、计算属性名
  • 数组字面量:数组创建语法、元素类型多样性、数组索引从0开始、length属性
  • 属性访问与修改:点语法访问、方括号语法访问、动态属性名、属性添加与删除
  • 数组索引与长度:索引范围、length属性含义、稀疏数组、超出索引返回undefined
  • 数组遍历方法:forEach遍历、map映射、filter过滤、for...of与for...in区别
  • 数组常用方法:push/pop/shift/unshift、splice与slice、map/filter返回新数组
  • 对象遍历方法:Object.keys/values/entries、for...in遍历属性名
  • 解构赋值:数组解构按顺序、对象解构按属性名、默认值设置
💡 参考答案在文末
判断题
1

对象字面量中的属性名可以使用字符串形式,如 { "name": "张三" }

A

B

2

访问对象的属性时,如果属性名包含特殊字符或空格,必须使用方括号语法。

A

B

3

JavaScript 数组可以包含不同类型的元素,如 [1, "hello", true, null, {a:1}]

A

B

4

数组的 length 属性总是等于数组中实际元素的个数。

A

B

5

for...in 遍历数组的索引(键),for...of 遍历数组的元素(值)。

A

B

单选题
6

以下哪种方式可以创建一个包含 name 属性的对象?

A

let obj = [name: "张三"];

B

let obj = {name: "张三"};

C

let obj = (name: "张三");

D

let obj = <name: "张三">;

7

以下哪种方式可以创建一个包含三个元素的数组?

A

let arr = (1, 2, 3);

B

let arr = {1, 2, 3};

C

let arr = [1, 2, 3];

D

let arr = <1, 2, 3>;

8

数组 let arr = ["a", "b", "c"]; 中,访问第二个元素 "b" 应该使用?

A

arr[1]

B

arr[2]

C

arr["b"]

D

arr.b

9

以下代码输出结果是什么?

JavaScript
let key = "name";
let obj = {[key]: "张三"};
console.log(obj.name);
A

undefined

B

"张三"

C

"[key]"

D

报错

10

以下代码输出结果是什么?

JavaScript
let arr = [1, 2, 3];
arr.forEach((item, index) => {
    console.log(index + ":" + item);
});
A

0:1, 1:2, 2:3

B

1:1, 2:2, 3:3

C

1:0, 2:1, 3:2

D

undefined

11

以下代码执行后,a 和 b 的值分别是?

JavaScript
let [a, b] = [1, 2, 3];
A

a=1, b=2

B

a=1, b=[2, 3]

C

a=[1, 2], b=3

D

a=1, b=undefined

12

以下代码执行后,name 和 age 的值分别是?

JavaScript
let {name, age} = {name: "张三", age: 20, city: "北京"};
A

name="张三", age=20

B

name="张三", age={age: 20, city: "北京"}

C

name=undefined, age=undefined

D

name={name: "张三"}, age={age: 20}

13

以下代码输出结果是什么?

JavaScript
let arr = [1, 2, 3, 4];
let sum = arr.reduce((acc, cur) => acc + cur, 0);
console.log(sum);
A

[1, 2, 3, 4]

B

10

C

0

D

4

多选题
14

关于数组遍历方法,以下说法正确的是?

A

forEach 不改变原数组

B

map 返回新数组,不改变原数组

C

filter 返回满足条件的元素组成的新数组

D

for...of 可以遍历数组,也可以用 break 跳出

15

关于解构赋值,以下说法正确的是?

A

数组解构按位置顺序匹配

B

对象解构按属性名匹配

C

解构时可以设置默认值

D

解构可以用于函数参数

16

以下哪些数组方法会修改原数组?

A

push

B

pop

C

map

D

splice

17

以下哪些方法可以用于遍历对象?

A

Object.keys(obj)

B

Object.values(obj)

C

Object.entries(obj)

D

for...in

填空题
18

对象字面量使用 ____________ 创建,属性以 ____________ 形式表示,键和值之间用 ____________ 分隔,多个属性之间用 逗号 分隔。

19

数组索引从 ____________ 开始,最后一个元素的索引是 ____________。访问不存在的索引返回 ____________。length 属性表示 最大索引加1,可以修改它来 截断数组。

20

数组解构使用 ____________,按 ____________ 匹配。对象解构使用 ____________,按 属性名 匹配。解构不匹配时变量值为 undefined,可以设置 默认值 避免。

参考答案
1.正确 2.正确 3.正确 4.错误 5.正确 6.B 7.C 8.A 9.B 10.A 11.A 12.A 13.B 14.A;B;C;D 15.A;B;C;D 16.A;B;D 17.A;B;C;D 18.花括号;键值对;冒号 19.0;arr.length - 1;undefined 20.[];顺序;{}
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 JS安全与边界处理专题测试
下一套试卷 → JS异步编程入门专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码