javaScript数组和对象及字符串(API)
数组
内置基本类型和引用类型在内存中存储的方式:
内置基本类型:只有一块空间,栈空间,用来存储数值
引用类型:有两块空间:一块栈空间,存储的是堆空间的地址
一块堆空间,存储的是数据的本身
栈:自动分配内存空间,系统自动释放,里面存放的是基本类型的值和引用类型的地址
堆:动态分配的内存,大小不定,也不会自动释放。里面存放引用类型的值。
数组的定义:
1,构造函数
new:在堆上开辟空间的关键字
Array:数组的类型
1 | var arr = new Array(1, 2, 33, 44, 5, "嘿嘿"); |
2,字面量
1 | var arr = [6,5,7,4,8]; |
数组元素的访问:
数组名[下标];
下标:基于0,连续的整数
可以为常量和变量
1 | console.log(arr[0]); |
数组的遍历:对数组每个元素操作的过程
数组元素的个数,也称为长度 arr.length;
1 | console.log(arr.length); |
数组的常见函数(API)
如何学习函数:关注3点
1,函数的功能
2,函数的参数
3,函数的返回值
push
功能:尾插
参数:push(参数1,[参数2,…参数n]);
返回值:数组的新长度
1 | var arr = [6,7,8,9]; |
pop
功能:尾删
参数:无参
返回值:被删除的元素
1 | var arr = [6,7,8,4,9]; |
unshift
功能:头插
参数:unshift(参数1,[参数2,…参数n]);
返回值:新数组的长度
1 | var arr = [1,2,3,4,5]; |
shift
功能:头删
参数:无参
返回值:被删除的元素
1 | var arr = [1,2,3,4,5]; |
splice
功能:删除数组的元素,或添加新元素
参数:splice(起始位置,偏移量,[新添加的元素1,元素2…]);
返回值:被删除的元素
1 | var arr = [6,5,4,8,9,3,0]; |
join
功能:将数组按照分隔符转换为字符串
参数:join([分隔符]):省略参数分隔符默认为逗号
返回值:字符串
1 | var arr = [1,2,3,4,5,6]; |
slice
功能:数组的部分截取
参数:slice(起始位置,结束位置):左闭右开;
返回值:截取的数组元素
1 | var arr = [4,5,6,7,8,2,9]; |
concat
功能:拼接数组
参数:concat(数组)
返回值:拼接后的数组
1 | var arr1 = [1,2,3]; |
reverse
功能:逆序
参数:无
返回值:无
注意事项:会改变原数组
1 | var arr = [1,2,3,4,5,6]; |
sort
功能:方法用于对数组的元素进行排序,默认按字符编码的顺序进行排序
1 | var arr = [6,5,7,4,8,9,3,0,11]; |
JS没有多维数组,所谓的多维数组,实际就是通过一维数组嵌套实现的
1 | var arr = [ |
indexOf
功能:数组元素的查找
参数:indexOf(目标元素)
返回值:找到返回元素下标,找不到返回-1
1 | var arr = [6, 5, 4, 7, 8, 3, 6]; |
数组三个迭代函数
forEach
功能:遍历(迭代)整个数组,执行某种功能
参数:forEach(回调函数)
function fun(当前数组元素的值,[数组元素的下标,数组名]){
}
返回值:无
1 | function fun(x, index, a) { |
map
功能:遍历(迭代)整个数组,执行某种功能
参数:map(回调函数)
function fun(当前数组元素的值,[数组元素的下标,数组名]){
}
返回值:回调函数return的数据组成的新数组
1 | function fun(x, index, a) { |
filter
功能:过滤,根据回调函数的return的布尔值,决定是否过滤该元素
参数:filter(回调函数)
function fun (当前数组元素的值,[数组元素的下标,数组名]){
}jl
返回值:根据回调函数return的布尔值,组成的新数组
1 | function fun(x, index, a) { |
array.at() 方法
array.at(index) 访问index参数处的元素
如果index参数是一个正整数>= 0,该方法返回该索引处的项目
1 | const fruits = ['orange', 'apple', 'banana', 'grape']; |
如果index参数大于或等于数组长度,则与常规访问器一样,该方法返回undefined:
1 | const fruits = ['orange', 'apple', 'banana', 'grape']; |
当你对array.at()方法使用负下标时,将从数组的末尾访问元素。
1 | const lastItem = fruits.at(-1); |
数组去重:
1 | var arr = [6, 6, 5, 3, 2, 2, 3, 4, 1, 2, 3]; |
json对象:
是描述数据的一种格式,将若干个繁杂的属性和函数封装成一个整体。
a.定义,通过键值对实现定义,每组键值对用逗号隔开
1 | var json = { |
建议json的key加上双引号
1 | var stu = { |
b.属性的访问
1,通过点访问
1 | 写 |
2,通过下标访问
1 | var str = "age"; |
c.添加自定义属性
对象.新属性名=属性值;
1 | stu.tall = "180"; |
d.自己的函数访问其他的成员属性,需要加前缀this
1 | var stu = { |
e.遍历json对象(通常被遍历的json对象是没有函数的)
1 | var stu = { |
for…in中不能用点
1 | console.log(stu.index); |
字符串的创建
1.构造函数:引用类型
1 | var str1 = new String("hello lao wang"); |
2,字面量:内置基本类型
1 | var str2 = "hello lao wang"; |
字符串常见API及调用
charAt(下标):返回下标对应的字符
1 | console.log(str.charAt(1)); |
charCodeAt(下标):返回下标对应的字符的asc码值
length: 表示字符串的长度
fromCharcode
功能:将asc码值转换为字符返回
参数:fromCharCode(asc码值1,[值2…])
返回值:asc码值对应的字符串
注意事项:该方法是直接通过String类型调用的
1 | console.log(String.fromCharCode(97, 98)); |
replace
功能:用参数2,替换参数1
参数:replace(目标字符串,替换字符串)
返回值:替换过后的字符串
1 | var str = "duxingyu de ge bi shi duxingyu"; |
slice
功能:截取字符串:左闭右开
参数 slice(start,end): 支持负数
substring
功能:截取字符串:左闭右开
参数:substring (start,end)
split
功能:按照字符分割,转成一个数组
参数:split(分隔符)
返回值:通过分隔符拆分的字符串数组
1 | var str = "wo de ge bi shi dilireba"; |
字符串大小写转换
1 | console.log("HeiHei".toLowerCase()); |
json字符串转json对象
1 | var str = '{"name":"老王","age":18}'; |
json对象转json字符串
1 | var json = { |
对象转化为数组的三种方法:
Object.keys(obj) —–根据对象的键形成的数组(常用)
Object.entries(obj) —- 根据对象的键值对形成的数组
Object.values(obj)—-根据对象的值形成的数组
注意点:Object开头字母要大写