1_01李婉玲_数据结构_1012

Day03作业 数据结构

概述 基本类型和引用类型

基本类型:String Boolean Number Null Undefined Symbol Bigint。

引用类型:Object(存储属性和属性值) Function。

数组(Array):有序的值的列表。
集合(Set):唯一值的集合。
特殊集合(WeakSet):特殊Set。
映射(Map):键值对。
特殊映射(WeakMap):特殊Map。

区别:

  1. (内存存储)基本类型存储在栈(Stack)里面;引用类型在栈上存储对堆上数据的引用(指针),在堆(Heap)上存储引用类型本身的数据。
  2. (清理方式)基本类型函数和方法执行完就清理内存;引用类型采用垃圾回收机制。

对象 存储属性和属性值

定义对象:

  • Object构造器
// 方式一:尽量不使用这种方法
// 声明对象
let person = new Object();
// 构造器方式定义属性
person.name = 'liwanling';
person.age = 18;
// 引用
console.log(person.name)
  • 对象字面量
// 方法二:创建对象字面量
let person1 = {
   };
// 赋值,设置属性
person1.name = 'liwanling';
person1.age = 18;
console.log(person1.name);

// 创建对象字面量
let person2 = {
   };
// 赋值
let person2 = {
   
    name:'liwanling',
    age:18,
    // 可以加行为
    getUserName:function(){
   
    }
};
console.log(person2.name);
console.log(typeof person2);    //Object

数组 有序的值的列表

(与其他编程语言相比)区别:

  1. 数组的每个槽位可以存储任意类型的数据。
  2. 动态大小 —— 影响性能。

定义数组:(声明)

  • 数组构造器
const oArray = new Array();
  • 数组字面量
const oArray = [];
console.log(typeof oArray);	// Object

初始化:

// 数组初始化
const heroes = [];// 未赋值
console.log(heroes[0]);// Undefined

const heroes = [];
heroes[0] = '蝙蝠侠';
heroes[1] = '神奇女侠';
heroes[2] = '闪电侠';
heroes[5] = '水行侠';// 表示六个元素,其他元素为Undefined
console.log(heroes);

const avengers = ['美国队长','钢铁侠','雷神','绿巨人'];
console.log(avengers);

// 删除数组元素:元素个数没变
const avengers = ['美国队长','钢铁侠','雷神','绿巨人'];
delete avengers[0];
console.log(avengers);

// 数组里可以是任意元素类型
let person2 = {
   
    name:'liwanling',
    age:18,
};
const a = [0,undefined,'123112',null,person2];
console.log(a);

解构数组:将数组中的元素取出来赋值给变量。

const array1 = [1,2,3];
let a = array1[0];
let b = array1[1];
let c = array1[2];

const [a,b,c] = [1,2,3];
console.log(`a=${
     a},b=${
     b},c=${
     c}`);

const [a,b] = [1,2,3];// 两个变量a,b
console.log(a);

数组的属性和方法:

  1. length属性:数组的长度。
const avengers = ['美国队长','钢铁侠','雷神','绿巨人'];
console.log(avengers.length);

// 通过设置length属性改变数组元素(不可逆转的改变,无副本)
avengers.length = 1;
console.log(avengers);// [ '美国队长' ]
avengers.length = 5;
console.log(avengers);// <1 empty item> Undefined

// 不改变数组元素:将length设为只读属性get。
  1. pop()方法:删掉数组中最后一个元素。
// 声明数组
const avengers = ['美国队长','钢铁侠','雷神','绿巨人'];
// 数组维数缩小
console.log(avengers.pop());
console.log(avengers);

// delete运算符:元素个数没变,删掉元素变为Undefined
const avengers = ['美国队长','钢铁侠','雷神','绿巨人'];
delete avengers[0];
console.log(avengers);

pop()方法和delete运算符的区别:pop数组元素个数减少,delete运算符元素个数没变。

  1. push()方法:将新值添加到数组的末尾。
const avengers = ['美国队长','钢铁侠','雷神','绿巨人'];
avengers.push('蝙蝠侠');
console.log(avengers);
  1. shift()方法:删除数组中的第一个元素。
const avengers = ['美国队长','钢铁侠','雷神','绿巨人'];
avengers.shift();
console.log(avengers);// [ '钢铁侠', '雷神', '绿巨人' ]
console.log(avengers.shift());// 输出删除元素 钢铁侠
  1. unshift()方法:将新值添加到数组的开头。
const avengers = ['美国队长','钢铁侠','雷神','绿巨人'];
avengers.unshift('小超人');
console.log(avengers);
console.log(avengers.unshift());
  1. concat()方法:数组合并。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值