全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

JS 对象与数组

专题说明

本专题系统讲解JavaScript对象与数组的核心知识,涵盖对象字面量创建、属性访问与修改、数组字面量、数组索引与长度、数组遍历方法、解构赋值、展开运算符、常用数组方法、对象遍历等内容。

学习目标

  1. 掌握对象字面量的创建与属性访问方式
  2. 理解点语法与方括号语法的使用场景
  3. 掌握数组字面量的创建与基本操作
  4. 理解数组索引与length属性的关系
  5. 掌握数组遍历方法(forEach、map、filter、for...of)
  6. 理解数组和对象解构赋值的语法与区别
  7. 掌握展开运算符的应用场景与浅拷贝特性
  8. 理解修改原数组与不修改原数组的方法分类
  9. 掌握对象遍历方法(Object.keys/values/entries)
  10. 学会处理对象与数组的嵌套结构

学习内容

本专题涵盖以下核心知识点:

  • 对象字面量:花括号创建、键值对语法、字符串属性名
  • 属性访问与修改:点语法、方括号语法、添加修改删除属性
  • 数组字面量:方括号创建、任意类型元素、空数组
  • 数组索引与长度:索引从0开始、length属性、稀疏数组
  • 数组遍历:forEach、map、filter、for...of、for...in
  • 解构赋值:数组解构、对象解构、默认值、函数参数解构
  • 展开运算符:复制合并数组、复制合并对象、浅拷贝特性
  • 数组方法:push/pop/shift/unshift、slice/splice、map/filter/reduce
  • 对象遍历:Object.keys/values/entries、for...in
  • 嵌套结构:可选链操作符、链式调用处理嵌套数据

学习建议

  1. 区分点语法和方括号语法的适用场景(特殊属性名必须用方括号)
  2. 理解数组length不一定等于实际元素个数(稀疏数组)
  3. 区分修改原数组的方法与不修改原数组的方法
  4. 理解数组解构按顺序、对象解构按属性名的区别
  5. 注意展开运算符是浅拷贝,嵌套对象仍为引用
  6. 优先使用Object.keys/values/entries遍历对象,避免for...in遍历原型链
  7. 掌握可选链?.安全访问嵌套结构,避免报错

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
单选题

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

A

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

B

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

C

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

D

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

2
判断题

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

A

B

3
单选题

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

A

let arr = (1, 2, 3);

B

let arr = {1, 2, 3};

C

let arr = [1, 2, 3];

D

let arr = <1, 2, 3>;

4
判断题

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

A

B

5
填空题

数组字面量使用 ______ 创建,元素之间用 ______ 分隔。空数组写为 ______。数组可以包含 ________ 的元素。

6
单选题

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

A

arr[1]

B

arr[2]

C

arr["b"]

D

arr.b

7
判断题

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

A

B

8
填空题

数组索引从 ______ 开始,最后一个元素的索引是 ______________。访问不存在的索引返回 _________。length 属性表示 ___________,可以修改它来 ________

9
单选题

以下哪种方式可以正确访问对象的 name 属性?

A

obj.name

B

obj[name]

C

obj->name

D

obj::name

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

forEach

B

map

C

for...of

D

for...in

12
单选题

以下代码执行后,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

13
单选题

以下代码执行后,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}

14
单选题

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

JavaScript
let arr1 = [1, 2];
let arr2 = [...arr1, 3];
console.log(arr2);
A

[1, 2]

B

[3, 1, 2]

C

[1, 2, 3]

D

[[1, 2], 3]

15
单选题

以下哪个方法在数组末尾添加元素?

A

push

B

pop

C

shift

D

unshift

16
多选题

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

A

push

B

pop

C

map

D

splice

17
单选题

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

JavaScript
let obj = {a: 1, b: 2, c: 3};
console.log(Object.keys(obj));
A

["a", "b", "c"]

B

[1, 2, 3]

C

[["a", 1], ["b", 2], ["c", 3]]

D

{a: 1, b: 2, c: 3}

18
单选题

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

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

19
单选题

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

JavaScript
let data = {users: null};
console.log(data?.users?.[0]?.name);
A

null

B

undefined

C

报错 TypeError

D

"undefined"

20
填空题

遍历嵌套数组对象:使用 ______ 提取嵌套属性,如 items.map(i => i.name)。使用 ______ 过滤嵌套条件,如 items.filter(i => i.age > 18)。链式调用 ______ 多个方法,如 ________________________

← 上一个专题 JS 基础语法与变量
下一个专题 → JS 异步编程入门

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库