1、pop()
函数用来移出数组中最后一个元素;shift()
函数移出数组中的第一项,unshift
(移入)一个元素到数组的头部。
例如:
var myArray = [["John", 23], ["dog", 3]]; var a=myArray.pop(); //var myArray = [ ["John", 23] ]; 移出最后一个 var a=myArray.shift(); //var myArray = [ ["dog", 3] ]; 移出第一个 var c=myArray.unshift(["ccc",1]); //var myArray =[["ccc",1],["John", 23], ["dog", 3]]; 数组["ccc",1]插入了头部,成为了第一个
2、所有的比较操作符返回的都是一个boolean值,要么是 true
要么是false
。使用 if/else
语句来做比较然后返回true
或false
已经成为大家的共识:
例如:
function isEqual(a,b) { if (a === b) { return true; } else { return false; } }
可以简化成:
function isEqual(a,b) { return a === b; }
3、有两种方式访问对象属性,一个是点操作符(.
),一个是中括号操作符([]
)。当你知道属性的名称的时候,使用点操作符。
1)点操作符(.
)
例如:
var myObj = { prop1: "val1", prop2: "val2" }; var prop1val = myObj.prop1; // val1 var prop2val = myObj.prop2; // val2 //或 var testObj = { "hat": "ballcap", "shirt": "jersey", "shoes": "cleats" }; var hatValue = testObj.hat; // ballcap 点操作符 var shirtValue = testObj.shirt; // jersey 点操作符
2)中括号操作符([]
):如果你想访问的属性的名称有一个空格,这时你只能使用中括号操作符([]
)。
var myObj = { "Space Name": "Kirk", "More Space": "Spock" }; myObj["Space Name"]; // Kirk myObj['More Space']; // Spock
//提示:属性名称中如果有空格,必须把属性名称用单引号或双引号包裹起来。
注意:
1)当你创建了一个对象后,你可以用点操作符或中括号操作符来更新对象的属性。
// 举例 var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] };
让我们更改它的名称为 "Happy Camper",这有两种方式来更新对象的name
属性:
var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] }; ourDog.name = "Happy Camper"; //点操作符
ourDog["name"]= "Happy Camper"; //中括号操作符
2)也可以像更改属性一样给对象添加属性。
// 举例 var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] };
给myDog
添加一个"bark"
属性,设置它的值为狗的声音,例如:"bow-wow"。
var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] }; ourDog.bark = "bow-wow"; //点操作符
ourDog["bark"]= "bow-wow"; //中括号操作符
3)删除对象的属性 (删除ourDog对象的"tails"
属性。)
// 举例 var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"], "bark": "bow-wow" };
delete ourDog.bark; //点操作符
4)中括号操作符的另一个使用方式是用变量来访问一个属性。当你需要遍历对象的属性列表或查表时,这种方式极为有用。
使用变量来访问属性的例子:
var someProp = "propName"; var myObj = { propName: "Some Value" } myObj[someProp]; // "Some Value"
以及:
var myDog = "Hunter"; var dogs = { Fido: "Mutt", Hunter: "Doberman", Snoopie: "Beagle" } var breed = dogs[myDog]; // "Hunter" console.log(breed)// "Doberman"
提示:当我们通过变量名访问属性的时候,不需要给变量名包裹引号。因为实际上我们使用的是变量的值,而不是变量的名称。
4、检查一个对象属性是否存在是非常有用的,我们可以用.hasOwnProperty(propname)
方法来检查对象是否有该属性。如果有返回true
,反之返回 false
。
//举例1 var myObj = { top: "hat", bottom: "pants" }; myObj.hasOwnProperty("top"); // true myObj.hasOwnProperty("middle"); // false
//举例2 //用函数checkObj检查myObj是否有checkProp属性,如果属性存在,返回属性对应的值,如果不存在,返回 "Not Found"。 //代码如下 var myObj = { gift: "pony", pet: "kitten", bed: "sleigh" }; function checkObj(checkProp) { var tr = myObj.hasOwnProperty(checkProp); //检查对象是否存在,将结果赋值给tr if(tr===true){ //判断tr是否true ?(存在) return myObj[checkProp]; // //存在则返回属性对应的值 }else{ return "Not Found"; //不存在,则返回“Not Found”
} }
checkObj("gift");
5、for循环:
for循环中的三个表达式用分号隔开:
for ([初始化]; [条件判断]; [计数器])
初始化
语句只会在执行循环开始之前执行一次。它通常用于定义和设置你的循环变量。
条件判断
语句会在每一轮循环的开始执行,只要条件判断为 true
就会继续执行循环。
当条件为false
的时候,循环将停止执行。这意味着,如果条件在一开始就为 false
,这个循环将不会执行。
计数器
是在每一轮循环结束时执行,通常用于递增或递减
//举例1: var ourArray = []; for (var i = 0; i < 5; i++) { ourArray.push(i); } //先初始化i = 0,条件 i < 5 为真,进入第一次循环,执行大括号里的代码,第一次循环结束。递增i的值,条件判断,就这样依次执行下去,直到条件判断为假,整个循环结束。 //举例2:通过更改我们的 计数器,我们可以按照偶数顺序来迭代。 var ourArray = []; for (var i = 0; i < 10; i += 2) { ourArray.push(i); } //初始化 i = 0,当 i < 10 的时候继续循环。i += 2 让 i 每次循环之后增加2。循环结束后,ourArray 的值为 [0,2,4,6,8]。奇数同上 //举例3:for循环也可以逆向迭代 var ourArray = []; for (var i=10; i > 0; i-=2) { ourArray.push(i); } //为了能够从后往前两两倒数,需要改变我们的 初始化,条件判断 和 计数器。让 i = 10,并且当 i > 0 的时候才继续循环。使用 i-=2 来让 i 每次循环递减 2。循环结束后,ourArray 的值为 [10,8,6,4,2]。 //举例4:for 循环迭代输出一个数组的每个元素 var arr = [10,9,8,7,6]; for (var i=0; i < arr.length; i++) { console.log(arr[i]); } //数组的索引从零开始的,这意味着数组的最后一个元素的下标是:数组的长度 - 1。我们这个循环的 条件 是 i < arr.length,当 i 的值为 长度-1 的时候循环就停止了 //举例5:二维数组,可以使用相同的逻辑,先遍历外面的数组,再遍历里面的子数组。 //1): var arr = [ [1,2], [3,4], [5,6] ]; for (var i=0; i < arr.length; i++) { for (var j=0; j < arr[i].length; j++) { console.log(arr[i][j]); } } //一次输出 arr 中的每个子元素。提示,对于内部循环,我们可以通过 arr[i] 的 .length 来获得子数组的长度,因为 arr[i] 的本身就是一个数组。 //2): function multiplyAll(arr) { var product = 1; for (var i=0;i<arr.length;i++){ for (var j=0;j<arr[i].length;j++){ product *= arr[i][j]; } } return product; } multiplyAll([[1,2],[3,4],[5,6,7]]); //函数 multiplyAll,获得 arr 内部数组的每个数字相乘的结果 product。
6、while循环:
另一种类型的 JavaScript 循环被称为while循环
,因为它规定,当(while)条件为真,循环才会执行,反之不执行。
//举例
var ourArray = []; var i = 0; while(i < 5) { ourArray.push(i); i++; }
7、计算机的行为只有两种:确定性和随机性。Math.random()
用来生成一个在0(包括0)到1(不包括1)之间的随机小数,因此Math.random()
可能返回0但绝不会返回1。
//举例: function myFunction(arr) { var arr = Math.random(); return arr; } //myFunction 来生成一个随机数。
1)生成随机小数很棒,但随机数更有用的地方在于生成随机整数
例子:
- 用
Math.random()
生成一个随机小数。 - 把这个随机小数乘以
20
。 - 用
Math.floor()
向下取整 获得它最近的整数。 - 注意:记住
Math.random()
永远不会返回1
。同时因为我们是在用Math.floor()
向下取整,所以最终我们获得的结果不可能有20
。这确保了我们获得了一个在0到19之间的整数
//把操作连缀起来,代码类似于下面: Math.floor(Math.random() * 20);
例子: //生成一个 0 到 9之间的随机整数。 function myFunction(arr) { var arr= Math.floor(Math.random() * 10); return arr; }
2)要生成的随机数是在两个指定的数之间。
//需要定义一个最小值和一个最大值。 Math.floor(Math.random() * (max - min + 1)) + min //例子: function randomRange(myMin, myMax) { var myRandom = Math.floor(Math.random() * (myMax - myMin + 1)) + myMin; return myRandom; } var myRandom = randomRange(5, 15); //randomRange的函数,参数为myMin和myMax,返回一个在myMin(包括myMin)和myMax(包括myMax)之间的随机数。
8、Regular expressions
正则表达式 被用来根据某种匹配模式来寻找strings
中的某些单词。
举例:如果我们想要找到字符串The dog chased the cat
中单词 the
,我们可以使用下面的正则表达式: /the/gi
我们可以把这个正则表达式分成几段:
/
是这个正则表达式的头部
the
是我们想要匹配的模式
/
是这个正则表达式的尾部
g
代表着 global
(全局),意味着返回所有的匹配而不仅仅是第一个。
i
代表着忽略大小写,意思是当我们寻找匹配的字符串的时候忽略掉字母的大小写。
1)可以在正则表达式中使用特殊选择器来选取特殊类型的值。
//特殊选择器中的一种就是数字选择器\d,意思是被用来获取一个字符串的数字。 //在JavaScript中, 数字选择器类似于: /\d/g。 //在选择器后面添加一个加号标记(+),例如:/\d+/g,它允许这个正则表达式匹配一个或更多数字。 //尾部的g是'global'的简写,意思是允许这个正则表达式 找到所有的匹配而不是仅仅找到第一个匹配。 //例子:
/\d+/g
2)可以使用正则表达式选择器 \s
来选择一个字符串中的空白。
//空白字符有 " " (空格符)、\r (回车符)、\n (换行符)、\t (制表符) 和 \f (换页符)。 //空白正则表达式类似于: /\s+/g
3)注意:正则表达式选择器的大写版本 来转化任何匹配.
//例子: \s //匹配任何空白字符, \S //匹配任何非空白字符。