1.添加元素
2. concat(),join(),reverse(),sort(回调函数)实现数字排序
//concat() 连接两个或更多的数组,并返回新数组
//该方法不会对原数组产生影响
/*
var arr = ["孙悟空","猪八戒","沙和尚"];
var arr2 = ["白骨精","玉兔精","蜘蛛精"];
var arr3 = ["玉皇大帝"];
console.log(arr.concat(arr2,arr3));
console.log(arr);
console.log(arr2);
*/
//join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔
//不会对原数组产生影响
//在join()中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符
//如果不指定连接符,则默认使用,作为连接符
/*
var arr = ["孙悟空","猪八戒","沙和尚"];
console.log(arr.join("hello")); //孙悟空hello猪八戒hello沙和尚
console.log(arr);
*/
//reverse() 颠倒数组中元素的顺序
//- 该方法用来反转数组
//- 该方法会直接修改原数组
/*
var arr = ["孙悟空","猪八戒","沙和尚"];
console.log(arr.reverse());//["沙和尚", "猪八戒", "孙悟空"]
console.log(arr);//["沙和尚", "猪八戒", "孙悟空"]
*/
//sort() 对数组的元素进行排序
//-该方法会修改原数组,默认按照Unicode编码进行排序
/*
var arr = ["b","d","e","a","c"];
console.log(arr.sort());//["a", "b", "c", "d", "e"]
console.log(arr);//["a", "b", "c", "d", "e"]
*/
//即使对于纯数字的数组,使用sort()排序,也会按照unicode编码进行排序,可能会得到错误的排序
/*
var arr = [1,31,24,8];
console.log(arr.sort());//[1, 24, 31, 8],结果错误
*/
//我们可以自己指定排序的规则
//我们可以在sort()中添加一个回调函数,来指定排序规则
//回调函数会分别使用数组中的元素作为实参去调用回调函数
//- 浏览器会根据回调函数的返回值来决定元素的顺序,
//-如果返回一个大于0的值,则元素会交换位置
//-如果需要升序排列,则返回a-b
//-如果需要降序排列,则返回b-a
var arr = [5,4,8];
arr.sort(function(a,b){
return a-b;
});
console.log(arr);//[4, 5, 8]
3.函数对象的call, apply方法
总结:
1.以函数的形式调用时,this永远是window
2.以方法的形式调用时,this是调用方法的对象
3.以构造函数的形式调用时,this是新创建的对象
4.使用call()和apply()调用,this是第一个参数指定的那个对象
<script type="text/javascript">
/*
call()和apply()
-这两个方法都是函数对象的方法,需要通过函数对象来调用
-当对函数调用call()和apply()都会调用函数执行
function fun(){
alert("我是fun函数");
}
fun.call();
fun.apply()
fun();
*/
//-在调用call和apply可以将一个对象指定为第一个参数
// 此时这个对象将会成为函数执行时的this
/*
function fun(){
alert(this.name);
}
var obj = {
name:"obj",
sayName:function(){
alert(this.name);
}
};
var obj2 = {
name:"obj2"
};
//fun.call(obj);
//fun();//this是[object Window]
//fun.call(obj);//this是[object Object]
//fun.apply(obj);//obj
//fun.apply(obj2);//obj2
//obj.sayName();//obj
obj.sayName.apply(obj2);//obj2 ,apply()参数是谁,this就是谁
*/
function fun(a,b){
console.log("a = "+a);
console.log("b = "+b);
}
var obj = {
name:"obj",
}
var obj2 = {
name: "obj2"
}
//call()方法可以将实参在对象之后依次传递
//apply()方法需要将实参封装到一个数组中统一传递
//fun.call(obj,2,3); //a=2,b=3
fun.apply(obj,[2,3]);//a=2,b=3
</script>
4.正则表达式
<script type="text/javascript">
//创建正则表达式的对象
/*
语法:
var 变量 = new RegExp("正则表达式","匹配模式");
使用typeof检查正则对象,会返回object
var reg = new RegExp(“a");这个正则表达式可以检查一个字符串中是否含有a
在构造函数中可以传递一个匹配模式作为第二个参数
—i 忽略大小写
g 全局匹配模式
*/
var reg = new RegExp("a");
var str = "a";
/*
正则表达式的方法:
test():
- 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则
如果符合返回true,否则返回false
*/
var result = reg.test(str);
console.log(reg.test("bcabc")); //true
</script>
<script type="text/javascript">
/*
使用字面量来创建正则表达式
语法: var 变量 = /正则表达式/匹配
var reg = /a/i;
console.log(reg.test("abcd"));//true
*/
//创建一个正则表达式,检查一个字符串中是否含有a或b
//使用|表示或者
var reg = /a|b/;
console.log(reg.test("cad"));
//创建一个正则表达式检查一个字符串是否有字母
//[]里的内容也是或的关系,【ab】== a|b
//【a-z】任意小写字母 [A-Z]任意大写字母 【a-z】/i 任意字母 【0-9】任意数字
var reg_1 = /[a-z]/;
console.log(reg_1.test("A"));
//检查一个字符串是否含有abc或adc或aec
var reg_2 = /a[bde]c/;
console.log(reg_2.test("abcs"));//true
/*
[^ab] 除了ab以外还有东西就是true
*/
var reg_3 = /[^ab]/;
console.log(reg_3.test("cc"));
</script>