push函数 尾部添加
.push() 允许有一个或多个参数,并把它“push”到数组的末尾。
var arr = [1,2,3];
arr.push(401);
现在arr的值为 [1,2,3,401]
pop函数 尾部移除
.pop() 函数用来“抛出”一个数组末尾的值。我们可以把这个“抛出”的值赋给一个变量存储起来。
举个例子, 对于这段代码
var oneDown = [1, 4, 6].pop();
现在 oneDown 的值为 6 ,数组变成了 [1, 4]。
shift函数 头部移除
.shift()移除的是第一个元素,而不是最后一个。
var arr = [1,2,3];
arr.shift();
现在arr的值为 [2,3]
unshift函数 头部添加
.unshift() 函数用起来就像 .push() 函数一样, 但不是在数组的末尾添加元素,而是在数组的头部添加元素。
函数
- 函数入门
function myFunction(){
console.log(“Hi World”);
}
myFunction();
2.小试试
function myFunction(a,b){
var sum=a+b;
console.log(sum);
}
myFunction(2,6);
队列(queue)是一个抽象的数据结构,队列中的条目都是有秩序的。新的条目会被加到 队列 的末尾,旧的条目会从 队列 的头部被移出。
写一个函数 queue ,用一个数组arr和一个数字item作为参数。数字item添加到数组的结尾,然后移出数组的第一个元素,最后队列函数应该返回被删除的元素。
function queue(arr, item) {
arr.push(item);
var del=arr.shift();
return del;
}
==(等于运算符)
最基本的运算符是相等运算符:==。相等运算符比较两个值,如果它们是同等,返回 true,如果它们不等,返回 false;
在 JavaScript 中,为了让两个不同的 数据类型(例如 数字 和 字符串)的值可以作比较,它必须把一种类型转换为另一种类型。然而一旦这样做,它可以像下面这样来比较:
1 ==1// true
1 ==2// false
1 == '1' // true
“3”==3// true
===(全等运算符)
全等(===)是相对于相等操作符(==)的一种操作符。与相等操作符不同的是全等比较严格,它会同时比较元素的值和 数据类型。
举个例子
3 === 3 // true
3 === '3' // false
3 是一个 数字 类型的,而'3' 是一个 字符 类型的,所以3不全等于'3'。
!=(不等于运算符)
(注意数值转换)
例如
1 != 2// true
1 != “1”// false
1 != '1'// false
1 != true // false
0 != false// false
!==(不全等运算符)
注意与不等于运算符区别
3 !== 3 // false
3 !== '3' // true
4 !== 3 // true
> (大于比较运算符)
>=(大于等于运算符)
使用大于运算符(>)来比较两个数字。如果大于运算符左边的数字大于右边的数字,将会返回 true。否则,它返回 false。
与相等运算符一样,大于运算符在比较的时候,会转换值的数据类型。
举个栗子
5 > 3 // true
7 > '3' // true
2 > 3 // false
'1' > 9// false
Object
对象和数组很相似,数组是通过索引来访问和修改数据,对象是通过属性来访问和修改数据的。
这是一个示例对象:
var cat = {
“name”: “Whiskers”,
“legs”: 4,
“tails”: 1,
“enemies”: [“Water”, “Dogs”]
};
JavaScript 使用点操作符.读取对象属性
有两种方式访问对象属性,一个是点操作符(.),一个是中括号操作符([])。
当你知道属性的名称的时候,使用点操作符。
这是一个使用点操作符读取对象属性的例子:
var myObj = {
prop1: “val1”,
prop2: “val2”
};
var prop1val = myObj.prop1; // val1
var prop2val = myObj.prop2; // val2
JavaScript 使用[]读取对象属性
第二种访问对象的方式就是中括号操作符([]),如果你想访问的属性的名称有一个空格,这时你只能使用中括号操作符([])。
这是一个使用中括号操作符([])读取对象属性的例子:
var myObj = {
“Space Name”: “Kirk”,
“More Space”: “Spock”
};
myObj[“Space Name”]; // Kirk
myObj['More Space']; // Spock
JavaScript 检查对象属性
有时检查一个对象属性是否存在是非常有用的,我们可以用.hasOwnProperty()方法来检查对象是否有该属性。如果有返回true,反之返回 false。
举例
var myObj = {
top: “hat”,
bottom: “pants”
};
myObj.hasOwnProperty(“top”);// true
myObj.hasOwnProperty(“middle”); // false
JavaScript 使用变量访问对象属性
中括号操作符的另一个使用方式是用变量来访问一个属性。当你需要遍历对象的属性列表或查表时,这种方式极为有用。
这有一个使用变量来访问属性的例子:
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”
提示:当我们通过变量名访问属性的时候,不需要给变量名包裹引号。因为实际上我们使用的是变量的值,而不是变量的名称。
JavaScript 更新对象属性
当你创建了一个对象后,你可以用点操作符或中括号操作符来更新对象的属性。
举个例子,让我们看看 ourDog:
var ourDog = {
“name”: “Camper”,
“legs”: 4,
“tails”: 1,
“friends”: [“everything!”]
};
让我们更改它的名称为 “Happy Camper”,这有两种方式来更新对象的name属性:
ourDog.name = “Happy Camper”;
ourDog[“name”] = “Happy Camper”;
JavaScript 给对象添加属性
你也可以像更改属性一样给对象添加属性。
看看我们是如何给ourDog添加 “bark”属性:
ourDog.bark = “bow-wow”;
或者
ourDog[“bark”] = “bow-wow”;
JavaScript 删除对象属性
我们同样可以删除对象的属性,例如:
delete ourDog.bark;
JSON
JavaScript Object Notation 简称 JSON,它使用JavaScript对象的格式来存储数据。JSON是灵活的,因为它允许 数据结构 是 字符串,数字,布尔值,字符串,和 对象 的任意组合。
这里是一个JSON对象的示例:
var ourMusic = [
{
“artist”: “Daft Punk”,
“title”: “Homework”,
“release_year”: 1997,
“formats”: [
“CD”,
“Cassette”,
“LP” ],
“gold”: true
}
];
这是一个对象数组,并且对象有各种关于专辑的 详细信息。它也有一个嵌套的 formarts 的数组。附加专辑记录可以被添加到数组的最上层。
提示
数组中有多个 JSON 对象的时候,对象与对象之间要用逗号隔开。
任务
使用点操作符和中括号操作符来检索变量 myPlants 的第二棵树。
刚开始实在是不懂如何访问啊。。原来是这样。
myPlants[1].list[1];
JavaScript 循环语句综合实战
如果你有一个二维数组,可以使用嵌套循环的逻辑,先遍历外面的数组,再遍历里面的子数组。下面是一个例子:
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] 的本身就是一个数组。
JavaScript 使用循环语句查找通讯录
我们有一个联系人列表,里面存储着不同联系人的数组对象。
函数 lookUpProfile 有两个预定义参数:firstName值和prop属性 。
该函数应检查firstName是实际联系人的firstName,给定的属性(prop)是该联系人的属性。
如果它们都存在,函数返回prop属性对应的值。
如果firstName 值不存在,返回 “No such contact”。
如果prop 属性不存在,返回 “No such property”。
Javascript随机数
random()生成随机小数
随机数对于创建随机行为很有用,计算机的行为只有两种:确定性和随机性。
而随机数最适合用来创建这种随机行为。
Math.random()用来生成一个在0(包括0)到1(不包括1)之间的随机小数,因此Math.random()可能返回0但绝不会返回1。
使用random()生成随机数
Math.floor() 向下取整
用 Math.random() 生成一个随机小数。
把这个随机小数乘以 20。
用 Math.floor() 向下取整 获得它最近的整数。
记住 Math.random() 永远不会返回 1。同时因为我们是在用 Math.floor() 向下取整,所以最终我们获得的结果不可能有 20。这确保了我们获得了一个在0到19之间的整数。
把操作连缀起来,代码类似于下面:
随机生成0-19之间的整数
Math.floor(Math.random() * 20);
使用random()在一个范围内生成随机数
Math.floor(Math.random()*(max-min+1))+min
生成11-84之间随机数
Math.floor(Math.random()*(84-11+1))+11;
JavaScript 使用正则表达式操作字符串
Regular expressions 正则表达式被用来根据某种匹配模式来寻找strings中的某些单词。
例如:如果我们想要找到字符串The dog chased the cat中单词 the,我们可以使用下面的正则表达式: /the/gi
我们可以把这个正则表达式分成几段:
/ 是这个正则表达式的头部
the 是我们想要匹配的模式
/ 是这个正则表达式的尾部
g 代表着 global(全局),意味着返回所有的匹配而不仅仅是第一个。
i 代表着忽略大小写,意思是当我们寻找匹配的字符串的时候忽略掉字母的大小写。
JavaScript 使用正则表达式选取数值
我们可以在正则表达式中使用特殊选择器来选取特殊类型的值。
特殊选择器中的一种就是数字选择器\d,意思是被用来获取一个字符串的数字。
在JavaScript中, 数字选择器类似于: /\d/g。
在选择器后面添加一个加号标记(+),例如:/\d+/g,它允许这个正则表达式匹配一个或更多数字。
尾部的g是'global'的简写,意思是允许这个正则表达式 找到所有的匹配而不是仅仅找到第一个匹配。
JavaScript 使用正则表达式选取空白字符
我们也可以使用正则表达式选择器 \s 来查找一个字符串中的空白。
空白字符有 “ “ (空格符)、\r (回车符)、\n (换行符)、\t (制表符) 和 \f (换页符)。
空白正则表达式类似于:
/\s+/g
JavaScript 使用正则表达式反转匹配
你可以用正则表达式选择器的大写版本来反转任何匹配(相反意思)。
例如:\s 匹配任何空白字符,\S 匹配任何非空白字符。
注:这里需注意 “+” 的作用,图中有”+” 取连续 非空字符值(个数)为9;若无”+”,非空字符值为49;