JavaScript小汇(2)——数据类型(详述)

数据类型(详述)

字符串

请不要把字符串创建为对象,它会拖慢执行速度。new 关键字使代码复杂化。

1.用 ‘ ’ “ ”包裹

2.注意转义字符

\n       //新行
\'
\t
\r       //回车
\u4e2d   //unicode
\x41     //ascii

3.多行字符串编写(用着重号包裹 ``)

var s = `hi
		hello  wa`;
console.log(s);

4.模板字符串

var name = "www";
var msg = `name:${name}`;//el表达式
console.log(msg);
>name:www

5.字符串长度

var str = "hello";
console.log(str.length);

//下标取值
console.log(str[0]);
>h

str[1] = 'l';//字符串中的值不能改变
>"l"
str
>"hello"

6.常见方法

console.log(str.toUpperCase())//变大写
>HELLO 

console.log(str.toLowerCase());//变小写
>hello

console.log(msg);
>name:${name}
console.log(msg.substring(2,4));//截取[2,4)
>me

console.log(msg.indexOf(':'));//找元素首次出现的索引
>4
数组

1.定义

var arr = [1,2,3,4,5];

2.长度

可以改变长度,变长会用undefined填充,变短会丢失;也可以改变数组中的值

console.log(arr.length);
>5

arr.length= 8;//可以改变数组的长度
>8
arr
>Array(8) [ 1, 2, 3, 4, 5, <3 empty slots> ]
arr[7];
>undefined

arr[3] = 33;//可以改变数组的值
>33
arr
>Array(8) [ 1, 2, 3, 33, 5, <3 empty slots> ]

3.二维数组

var arr2=[[1,2,3],['1','2','3'],['hello','hi']];
arr2[2][0];
"hello"

4.常见方法

var arr = [1,2,3,4,5];
console.log(arr.indexOf(3));//找对应元素的下标
>2

console.log(arr.slice(2, 4));//截取相当于substring(2, 4)
>Array [ 3, 4 ]

console.log(arr.push('a','b','c'));//从尾部添加元素
>8 
arr;
>Array(8) [ 1, 2, 3, 4, 5, "a", "b", "c" ]

console.log(arr.pop());//从尾部删除元素
>c
console.log(arr.pop());
>b
arr;
>Array(6) [ 1, 2, 3, 4, 5, "a" ]

console.log(arr.unshift('q','w','e'));//从头部添加元素
>9
arr;
>Array(9) [ "q", "w", "e", 1, 2, 3, 4, 5, "a" ]

console.log(arr.shift());//从头部删除元素
>q
arr;
>Array(8) [ "w", "e", 1, 2, 3, 4, 5, "a" ]

console.log(arr.sort()); //排序
>Array(8) [ 1, 2, 3, 4, 5, "a", "e", "w" ]

arr.concat('1');//拼接   会生成新的数组,不会改变原数组,每次拼接基于元数组
.Array(9) [ 1, 2, 3, 4, 5, "a", "e", "w", "1" ]
arr;
>Array(8) [ 1, 2, 3, 4, 5, "a", "e", "w" ]

console.log(arr.join('-'));//连接符  会生成新的数组,不会改变原数组
>1-2-3-4-5-a-e-w
arr;
>Array(8) [ 1, 2, 3, 4, 5, "a", "e", "w" ]
对象

1.定义

属性名都是字符串,属性值可以是任意对象

var 对象名 = {
    属性名:属性值,
    属性名:属性值,
    属性名:属性值
}
var person = {
    name:'wj',
    age:21,
    phone:1234567
}

2.赋值

person.name='wwww';
>"wwww"
person;
>Object { name: "wwww", age: 21, phone: 1234567 }

3.使用一个不存在的属性,不会报错,提示undefined

person.qq;
>undefined

4.删除属性

delete person.name;
>true
person;
>Object { age: 21, phone: 1234567 }

5.添加属性

person.qq='123456';
>"123456"
person;
>Object { age: 21, phone: 1234567, qq: "123456" }

6.判断属性是否在对象中

'qq' in person;
>true

'toString' in person;//'toString'在prototype中
true

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O3v5pYz8-1610853023448)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20210114203029553.png)]

7.判断自身是否拥有此属性

person.hasOwnProperty('age');
>true
person.hasOwnProperty('toString');
>false

8.js的对象是易变的

x和person是同一个对象

var person = {
    name:'wj',
    age:21,
    phone:1234567
}
var x = person;
x.age=10;
>10
person;
>Object { name: "wj", age: 10, phone: 1234567 }
Map和Set
Map

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

Map常用方法

var map = new Map([['Lili',12],['Harry',15],['Jack',34]]);
console.log(map.get('Jack'));//get()
>34

map.set('Lida',22);//set()
>Map(4) { Lili → 12, Harry → 15, Jack → 34, Lida → 22 }

map.delete('Lili');//删除

var map = new Map([['Lili',12],['Harry',15],['Jack',34]]);
var arr = Array.from(map);//将Map转为Array
arr;
>Array(3) [ (2) [], (2) [], (2) [] ]

Map遍历for…of

for(let[key,val] of map){//for...of遍历 
  console.log(key+":"+val);
}
>Lili:12 
>Harry:15
>Jack:34 
>Lida:22

for(let[key,val] of map.entries()){//这个 entries 方法返回一个新的 Iterator 对象
  console.log(key+":"+val);
}

for(let key of map.keys()){//遍历key(也可以是value)
  console.log(key);
}

map.forEach(function(key,value){//forEach遍历
  console.log(key+":"+value);
})
>12:Lili 
>15:Harry 
>34:Jack
>22:Lida
Set

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

Set遍历for…of

var set = new Set([1,2,3,4,4,4]);
for(let x of set){
  console.log(x);
}

Set常用方法

var set = new Set([1,2,3,4,4,4]);
console.log(set);
>Set(4) [ 1, 2, 3, 4 ]//会去重

set.add('aaa');
>Set(5) [ 1, 2, 3, 4, "aaa" ]//添加

set.delete(4);//删除
>true
set;
>Set(4) [ 1, 2, 3, "aaa" ]

set.has(1);//是否包含
>true

如有不对的地方欢迎大家指出,共同进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值