JavaScript数组
数组的创建方法
- 使用数组文本创建方法(最简单直接的方法)
var cars = ["Tesla", "Audi", "BMW"];
- .使用new关键字加Array方法创建数组(不建议使用的方法)
var cars = new Array("Tesla", "Audi", "BMW");
什么是关联数组
- 具有命名索引的数组成为关联数组,但JavaScript不支持命名索引数组
JavaScript数组方法
-
Array.length
//返回数组的长度(属性) -
Array.sort()
//将数组按顺序排列默认是按字母顺序进行排序 -
Array.forEach()
//遍历数组 -
Array.toString()
//将数组返回一个字符串形式
var cars = ["Tesla", "Audi", "BMW"];
document.getdocumentById('demo').innerHtml = car.toString() // 返回Tesla,Audi,BMW
Array.join()
//同类似,但可以自定义定界符
var cars = ["Tesla", "Audi", "BMW"];
document.getdocumentById('demo').innerHtml = car.join("#") // 返回Tesla#Audi#BMW
Array.pop()
//删除数组的最后一个元素Array.shift()
//删除数组的首个元素,同时其他元素的索引位置往前移Array.push("newElement")
//向数组添加新的元素(在数组最后)Array.unshift()
//在数组开头添加新的元素,其后面的元素相应地往后移Array.splice()
//向数组添加新的项(第一个参数是索引位置,第二个参数是删除多少元素,其余是要添加的元素)
var cars = ["Tesla", "Audi", "BMW"];
cars.splice(2,0,"Benz","VW")//从索引位置为2开始插入元素,删除0个元素
另外还可以用来删除元素
var cars = ["Tesla", "Audi", "BMW"];
cars.splice(2,1)//意思就是从位置2开始删除一个元素
Array.concat()
//将数组合并返回第三方数组
var car1 = ["Tesla", "Audi", "BMW"];
var car2 = ["Benz","VW"];
var car3 = car1.concat(car2); //意思是car1和car2组合成第三方数组
cars.splice(2,1)//意思就是从位置2开始删除一个元素
Array.slice()
//对数组进行剪裁,然后返回一个新数组(如果有第二个参数那么就是结束参数,但不包括结束参数)
var cars = ["Tesla", "Audi", "BMW","Benz","VW"];
var car2 = cars.slice(1) //意思是从索引位置为2开始断开数组,返回新的数组
JavaScript数组排序
Array.sort()
//将数组按顺序默认是字母按顺序进行排序,如果想对数字进行排序那么要用到比值函数Array.reverse()
//将数组翻转,和上面的sort()结合就可以实现倒序的效果
var score = [20,10,50,30,40];
score.sort(function(a,b){return a - b}); //数组将变为[10,20,30,40,50]
score.sort(function(a,b){return b - a}); //数组将变为[50,40,30,20,10]
- 还可以用比值函数来打乱数组
var score = [20,10,50,30,40];
score.sort(function(a,b){return 0.5 - Math.random()}); //返回随机顺序的数组
- 找数组最大/小值的方法,通过对数组先排序再找最大最小值的方法效率低,可以使用Math.max()/Math.min()方法
一定要注意要有Math.max.apply(null,text)
//apply ,null
var text = [28,45,67,98,67]
document.getElementById('demo').innerHTML = Math.max.apply(null,text) //返回最大值
JavaPattern类与Matcher类
首先Pattern的意思是模式,Marcher是匹配的意思,他们的作用都是用于解决检索问题
使用Pattern和Matcher类的步骤
- Pattern对象(用于封装正则表达式)使用
Pattern.compile("正则表达式")
方法
String s = "孙悟空的电子邮箱是sunwukong@163.com,猪八戒的电子邮箱是zhubajie@163.com"; //字符串
String regex = "\\w+@\\w+\\.[a-z]+(\\.[a-z])?)"; //通用电子邮件的正则表达式
Pattern pattern = Pattern.compile(regex); //创建一个pattern对象,里面封装了正则表达式regex
- Matcher对象(要结合Pattern类的对象进行使用)
Pattern类的对象.matcher("字符串")
Matcher matcher = pattern.matcher(s); //意思是通过封装regex的pattern对s字符串进行检索,然后返回到实例对象matcher
创建Matcher类对象完成后可以调用其方法
public boolean find()
//通过搜索查看是否有相匹配的值,有就返回true,反之public String group()
//返回用find()方法后的匹配的String对象public String replaceAll(String replacement)
//将检索到的相匹配的字符转为replacement,返回String
通过例子
public class Example9_14 {
public static void main(String[] args) {
String s = "电费:632.2元,水费:526.54元,网费:1009元"; //字符串
String regex = "[0-9]+[.]?[0-9]*"; //
Pattern pattern = Pattern.compile(regex); //创建一个pattern对象,里面封装了正则表达式regex
Matcher matcher = pattern.matcher(s); //意思是通过封装regex的pattern对s字符串进行检索,然后返回到实例对象matcher
double total = 0;
while(matcher.find()){ //查看是否拥有相配的对象
String str = matcher.group(); //将相匹配的对象赋值给str
total = total + Double.parseDouble(str); //将数字字符串转double类型
}
System.out.println("总费用是:"+total);
String [] weatherForecast = {"北京:-9度至7度","广州:10度至21度","哈尔滨:-29至-7"}; //创建一个字符串
double averTemperture [] = new double[weatherForecast.length]; //创建一个数组对象
for (int i = 0; i < weatherForecast.length; i++) {
matcher = pattern.matcher(weatherForecast[i]);
total = 0;
int count = 0; //用于字符串里有多少个相配的字符
while(matcher.find()){ //查看是否拥有相匹配的对象
count++;
String str = matcher.group(); //将相匹配的对象赋值给str
total = total + Double.parseDouble(str);
}
averTemperture[i] = total/count; //将平均气温存放到数组中
}
System.out.println("三地平均气温是"+ Arrays.toString(averTemperture));
}
}
运行结果
D:\HelloWorld\out\production\HelloJava TextCourse.Example9_14
总费用是:2167.74
三地平均气温是[8.0, 15.5, 18.0]
进程已结束,退出代码 0
StringBuffer类
buffern. [计] 缓冲区;缓冲器,[车辆] 减震器
vt. 缓冲
因为String类是final类,而且String类不提供修改字符序列的方法,简单地说就是String对象一旦诞生就无法修改了
因此StringBuffer类诞生了,该类提供能可修改对象字符序列的方法
创建StringBuffer类对象
StringBuffer Buffer = new StringBuffer("我爱学习");
StringBuffer类的常用方法
.append(String s)
//在字符串尾部添加字符串spublic char charAt(int n)
//返回参数n位置上的字符public void setCharAt(int n ,char ch)
//将参数n位置上的字符改为chStringBuffer insert(int index ,String str)
//在参数index位置上插入str字符序列public StringBuffer reverse()
//将对象实体中的字符序列翻转StringBuffer delete(int startIndex ,int endIndex)
//删除[stratIndex,endIndex)中的字符序列StringBuffer replace(int startIndex ,int endIndex,String str)
//将[stratIndex,endIndex)中的字符替换成str
CET4P153
underneath
theory
recover
incident
fashion
upset
torture