数组
是一组数据的集合
1.1使用字面量创建数组
[ 元素1, 元素2, 元素3... ] , 元素代表每一条数据
//字面量创建数组
var name=['涛哥','郑惠中','覃兴千',2,true];
//把地址拷贝一份给name2
var name2=name;
console.log(name);
console.log(typeof name);
1.2数组元素的访问
数组[下标]
下标:数组默认为每个元素添加的编号,从0开始
var city=['北京','杭州','长沙','西安'];
//下标(索引)
console.log( city[2], city[3] ); 输出:长沙,西安 元素不存在返回undefined
//修改元素
city[2]='成都';
//末尾增加元素
city[city.lengh]="new value"
1.3数组的长度
数组.length 获取数组元素个数
//获取数组的长度(元素个数)
//console.log(laptop.length);
在数组的末尾添加元素
数组[ 数组.length ] = 值
如:
laptop[ laptop.length ]='联想';
1.4 内置构造函数创建对象
new Array(元素1,元素2...)
new Array(长度) 创建数组,初始化长度值,可以添加更多个元素
//内置构造函数
var c=new Array('京东','淘宝','拼多多');
var course=new Array(4);
course[0]='mysql';
course[1]='js';
course[2]='nodejs';
course[3]='git';
course[4]='html';
//console.log(course);
1.5数组的分类
索引数组:以0及以上的整数作为下标
关联数组:以字符串作为下标,需要单独添加元素(不建议使用,可用对象代替)
//关联数组:以字符串作为下标
var person=['涛哥'];
person['sex']='男';
person.phone='18112345678';
//console.log(person); 输出结果:[ '涛哥', sex: '男', phone: '18112345678' ]
//console.log(person.length);
遍历数组
for (var key in person){
console.log(key)
}
1.6遍历数组
依次访问数组中的每个元素
for(var k in 数组){ k 代表下标 数组[k] 下标对应的元素} |
---|
for(var i=0;i<数组.length;i++){ i 代表下标 数组[i] 下标对应的元素} |
遍历关联数组,也可遍历索引数组
for (var key in person){
console.log(person[key])
}
遍历索引数组
for(var i=0;i<person.length;i++){
console.log(person[i])
}
1.7数组API
应用程序编程接口:JS中指的是预定义的函数和方法
isNaN/isFinite/eval/parseInt/console.log()/hasOnwProperty()/toString()
1.7.1 join() 将数组转为字符串,可以指定元素之间的分隔符,默认是按照逗号分隔
数组转为字符串
var arr=['a','b','c'];
//转为字符串
console.log( arr.toString() ); 输出结果为:a,b,c 默认间隔符为逗号
console.log( arr.join('-') ); 输出结果为:a-b-c
1.7.2 concat(arr2,arr3...) 拼接多个数组
var arr1=['a','b','c'];
var arr2=['d','e'];
var arr3=['f','g'];
// 拼接多个数组
console.log( arr1.concat(arr2,arr3) );
输出为:
[
'a', 'b', 'c',
'd', 'e', 'f',
'g'
]
1.7.4 slice() 截取数组元素
array.slice(开始下标,结束下标)
//截取数组元素 var arr=['李德强','郭非凡','张杰波','吕泽林','姚酱','张志霞','刘江','王文飞','程鹏']; //console.log( arr.slice(3) ); 如果只写一个下标,表示从下标3到结束 //console.log( arr.slice(3,6) ); //console.log( arr.slice(-3,-1) ); 倒数第几个下标
1.7.5 splice删除数组元素
arr.splice(开始下标,要删除的长度,补充的元素) 返回删除的元素
var arr=['李德强','郭非凡','张杰波','吕泽林','姚酱','张志霞','刘江','王文飞','程鹏']; //删除数组元素 //console.log(arr.splice(1,3)); 表示从下标为1开始删除,删除元素长度为3,返回删除的元素 //console.log(arr.splice(1)); 表示从下标1开始删除,没有长度表示一直删除到末尾 表示从下标为-4开始删除,删除元素长度为0,同时添加元素,'吴文宣','史恭龙','刘酱 console.log(arr.splice(-4,0,'吴文宣','史恭龙','刘酱'));' console.log(arr);
1.7.6 reverse() 翻转数组元素
var arr=['a','b','c','d']; //翻转 console.log( arr.reverse() ); console.log(arr); 输出: [ 'd', 'c', 'b', 'a' ] [ 'd', 'c', 'b', 'a' ]
1.7.7 sort() 对数组进行排序,默认是按照编码从小到大
sort( function(a,b){ return a-b; //按照数字从小到大 //return b-a; //按照数字从大到小} )
var arr=[23,9,78,6,45]; //排序 //arr.sort();//按照编码顺序排序 //按照数字排 arr.sort( function(a,b){ console.log(a,b); return a-b; 按照顺序从小到大排序 ---升序 //return b-a; 按照顺序从大到小排序 ---降序 } ); console.log(arr.sort());
1.7.8 indexOf(v) ,push(v1,v2..) , pop() ,unshift(v1,v2..),shift()
indexOf( v ) 查找数组中是否含有某个元素v,如果找到返回第一个的下标,找不到返回-1
push(v1,v2..) 往数组的末尾添加元素,返回数组的长度
pop() 删除数组末尾的一个元素,返回删除的元素
unshift(v1,v2..) 往数组的开头添加元素,返回数组的长度
shift() 删除数组开头的一个元素,返回删除的元素
//查找元素 var arr=['李德强','郭非凡','张杰波','李德强','吕泽林','姚酱','张志霞','刘江','王文飞','程鹏']; console.log( arr.indexOf('李德强') ); var arr=['刘江','王文飞','程鹏']; //末尾添加,返回数组的长度 //console.log(arr.push('祝彩凤','阮运良')); //删除末尾的一个,返回删除的元素 //console.log(arr.pop()); //开头添加,返回数组的长度 //console.log(arr.unshift('罗京')); //开头删除,返回删除的元素 // console.log( arr.shift() ); // console.log(arr);
2.二维数组
对数据进行二次分类
//省份 var arr1=['山东','江苏','广东']; //城市 //var arr2=['济南','青岛','威海','南京','苏州','无锡','广州','深圳','珠海']; //二维数组:二次分类 var arr3=[ ['济南','青岛','威海','烟台','日照'], ['南京','苏州','无锡','常州'], ['广州','深圳','珠海','惠州','东莞'] ]; console.log(arr3[2][1]);
访问形式 数组
3.字符串对象
包装对象,为了让原始类型数据像引用类型数据,具有属性和方法。
JS提供了三种包装对象:字符串(String)、数值(Number)、布尔(boolearn)
new String() 将数据包装为字符串对象
String() 将任意数据强制转换为字符串
var str1='1';//字面量 var str2=new String("a");//包装为字符串对象 var str3=String("a"); console.log(str3,typeof str3); console.log(str2,typeof str2); console.log(str1+2, str2+2); 输出: a string [String: 'a'] object 12 a2
3.1转义字符 \
转换字符原来的意义
' 转成普通的引号
\n 转成一个换行符
\t 转成一个制表符(tab键),产生多个连续空格
练习:打印出以下字符串
C:\users\web
3.2.1. length : 获取字符串的长度
var str='tao is playing单杠';
console.log( str.length ); //获取字符串长度
3.2.2 charAt(下标) : 获取下标对应的字符,可以使用数组写法 字符串[下标]
var str='tao is playing单杠';
//下标
console.log( str.charAt(0),str[0] );
3.2.3 indexOf(value,start) : 查找指定字符串第一次出现的位置,返回下标,找不到返回-1,start为开始查找的下标
3.2.4 lastIndexOf() : 查找指定字符串最后一次出现的位置,返回下标,找不到返回-1
var str='javascript';
//查找字符串
console.log( str.indexOf('a') );
console.log( str.lastIndexOf('a') );
3.2.5 toUpperCase() :英文字母转大写
3.2.6 toLowerCase(): 英文字母转小写
var str='JavaScript';
console.log( str.toUpperCase() );//转大写
console.log( str.toLowerCase() );//转小写
3.2.7 slice(start, end) : 截取字符串,start开始的下标,end结束的下标,不包括end本身,end为空截取到最后,下标为负数表示倒数,返回截取的字符串
3.2.8 substr(start, count) : 截取字符串,start开始的下标,count截取的长度,count为空截取到最后,下标为负数表示倒数,返回截取的字符串
3.2.9 str.subString(start,end)截取字字符串,不支持负数,也就是不支持倒数,如果下标为负数,自动转为0,start和end部不分前后,小的数字为start,大的为end
3.2.10 split(): 将字符串按照指定的字符切割为数组
3.3 字符串匹配模式
作用:用于查找,替换字符串
search(value) 用于查找满足条件的第一个下标,类似于indexOf,找不到返回-1
var str = "xiaoran 产于上世纪七八十年代,Xiaoran至今性能仍然强劲,xiaoran一顿饭能吃10盘羊肉,XIAORAN是一个美男子"
//查找
//indexOf
console.log(str.search("xiaoran")) //普通的正则匹配
console.log(str.search(/xiaoran/i)) //不区分大小写 i -->ignore 忽略大小写
match(value)
var str = "xiaoran 产于上世纪七八十年代,Xiaoran至今性能仍然强劲,xiaoran一顿饭能吃10盘羊肉,XIAORAN是一个美男子" //查找 //indexOf console.log(str.match(/XIAORAN/i)) //不区分大小写 i -->ignore 忽略大小写,返回第一个查找到的内容 console.log(str.match(/XIAORAN/ig)) //查找全部的XIOARAN -- > 全局查找,返回一个数组 g -->global 返回结果: [ 'xiaoran', index: 0, input: 'xiaoran 产于上世纪七八十年代,Xiaoran至今性能仍然强劲,xiaoran一顿饭能吃10盘羊肉,XIAORAN是一个美男子', groups: undefined ] [ 'xiaoran', 'Xiaoran', 'xiaoran', 'XIAORAN' ]
replace(匹配模式,替换值) 查找并替换
var str = "xiaoran 产于上世纪七八十年代,Xiaoran至今性能仍然强劲,xiaoran一顿饭能吃10盘羊肉,XIAORAN是一个美男子" console.log(str.replace(/xiaoran/ig,"***")) 输出结果: *** 产于上世纪七八十年代,***至今性能仍然强劲,***一顿饭能吃10盘羊肉,***是一个美男子
4.Math对象
数学对象,不需要创建,可以直接调用API。
PI 获取圆周率
abs() 获取绝对值
ceil() 向上取整
floor() 向下取整
round() 四舍五入取整
max() 获取一组数字最大值
min() 获取一组数字最小值
pow(x,y) 计算x的y次方
random() 获取随机数 >=0 <1
//console.log( Math.PI );//圆周率 //console.log( Math.abs(15-18) );//绝对值 //console.log( Math.ceil(5.1) );//向上取整 6 //console.log( Math.floor(8.9) );//向下取整 8 //console.log( Math.round(5.4) );//四舍五入 5 //console.log( Math.max(23,9,78,6,45) ); 求最大值 78 //console.log( Math.min(23,9,78,6,45) ); 求最小值 6 //console.log( Math.pow(5,3) ); 幂次方计算 5 的3次方 /* console.log( Math.random() ); 返回0-1的随机小数 console.log( Math.random() ); console.log( Math.random() ); */ var arr=['赵曼','程鹏','姚磊','刘酱','王庆举','吴文宣','郝龙祥','崔安邦','吴岩','卢明月','叶鎏微','弋阳','钱权','贺大壮']; //随机下标 //0~9之间的随机整数 //0~1 * 10 0~9.x 向下取整 0~9 var n=Math.floor( Math.random()*arr.length ); console.log(n, arr[n]);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探