1.通过串联起来的点操作符或中括号操作符来访问JSON对象的嵌套属性
var ourStorage = {
"desk": {
"drawer": "stapler"
},
"cabinet": {
"top drawer": {
"folder1": "a file",
"folder2": "secrets"
},
"bottom drawer": "soda"
}
}
ourStorage.cabinet["top drawer"].folder2; // "secrets"
ourStorage.desk.drawer; // "stapler"
2.Math操作
1.Math.random() 生成一个随机小数
2.用 Math.floor() 向下取整 获得它最近的整数。
function myFunction() {
// 生成一个 0 到 9之间的随机整数。
return Math.floor(Math.random() * 10);
}
3.正则表达式
正则表达式被用来根据某种匹配模式来寻找strings中的某些单词
1.举例:如果我们想要找到字符串The dog chased the cat中单词 the,我们可以使用下面的正则表达式: /the/gi
/ 是这个正则表达式的头部
the 是我们想要匹配的模式
/ 是这个正则表达式的尾部
g 代表着 global(全局),意味着返回所有的匹配而不仅仅是第一个。
i 代表着忽略大小写,意思是当我们寻找匹配的字符串的时候忽略掉字母的大小写。
var testString = "Ada Lovelace and Charles Babbage designed the first computer and the software that would have run on it.";
// 举例
var expressionToGetSoftware = /software/gi;
var softwareCount = testString.match(expressionToGetSoftware).length;
//结果是获取software单词的个数
// Only change code below this line.
var expression = /and/gi; // Change this Line
// This code counts the matches of expression in testString
var andCount = testString.match(expression).length;
2.特殊选择器中的一种就是数字选择器\d,意思是被用来获取一个字符串的数字。
在JavaScript中, 数字选择器类似于: /\d/g。
在选择器后面添加一个加号标记(+),例如:/\d+/g,它允许这个正则表达式匹配一个或更多数字。
尾部的g是'global'的简写,意思是允许这个正则表达式 找到所有的匹配而不是仅仅找到第一个匹配
// Setup
var testString = "There are 3 cats but 4 dogs.";
// Only change code below this line.
var expression = /\d+/g; // Change this line
// Only change code above this line
// This code counts the matches of expression in testString
var digitCount = testString.match(expression).length;
3.我们也可以使用正则表达式选择器 \s 来选择一个字符串中的空白
\s 匹配任何空白字符,\S 匹配任何非空白字符。。
空白字符有 " " (空格符)、\r (回车符)、\n (换行符)、\t (制表符) 和 \f (换页符)。
空白正则表达式类似于:
/\s+/g
// Setup
var testString = "How many spaces are there in this sentence?";
var expression = /\s+/g; // Change this line
// This code counts the matches of expression in testString
var spaceCount = testString.match(expression).length;
4.JS创建对象
1.创建对象
1
var car = {
"wheels":4,
"engines":1,
"seats":5
};
//构造函数创建
var Car = function() {
this.wheels = 4;
this.engines = 1;
this.seats = 1;
};
//构造函数 中添加 参数
//Try it out here
var Car = function(wheels,seats,engines){
this.wheels = wheels;
this.seats = seats;
this.engines = engines;
};
var myCar = new Car(6, 3, 1);
2.创建私有对象,只可以通过getSpeed方法访问该对象
var Car = function() {
// 创建一个私有对象
var speed = 10;
// public方法
this.accelerate = function(change) {
speed += change;
};
this.decelerate = function() {
speed -= 5;
};
this.getSpeed = function() {
return speed;
};
};
5.数组操作的方法
1.map方法:map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组。注意,这个方法不会改变原始数组。
var oldArray = [1,2,3,4,5];
// 使用 map 方法来为 oldArray 中的每一项增加3,
//并且在 newArray 中保存它们。 oldArray 不应该被改变
var newArray = oldArray.map(function(val){
return val + 3;
});
//
```
2.reduce方法:数组方法 reduce 用来迭代一个数组,并且把它累积到一个值中。
使用 reduce 方法时,你要传入一个回调函数,这个回调函数的参数是一个 累加器 (比如例子中的 previousVal) 和当前值 (currentVal)。
reduce 方法有一个可选的第二参数,它可以被用来设置累加器的初始值。如果没有在这定义初始值,那么初始值将变成数组中的第一项,而 currentVal 将从数组的第二项开始。
```
var array = [4,5,6,7,8];
var singleVal = 0;
// 遍历数组相加
singleVal = array.reduce(function(previosVal,cur){
//结果等于30
return previosVal + cur;
});
//下面的例子使用了 reduce 来让数组中的所有值相减:
var singleVal = array.reduce(function(previousVal, currentVal) {
return previousVal - currentVal;
}, 0);
```
3 . filter 方法用来迭代一个数组,并且按给出的条件过滤出符合的元素。
filter 方法传入一个回调函数,这个回调函数会携带一个参数,参数为当前迭代的项(我们叫它 val )。
回调函数返回 true 的项会保留在数组中,返回 false 的项会被过滤出数组
```
//使用 filter 来创建一个新数组,新数组的值是 oldArray 中值小于6的元素。不改变原数组 oldArray
var oldArray = [1,2,3,4,5,6,7,8,9,10];
// 只能在这一行下面写代码
var newArray = oldArray.filter(function(val){
return val <6;
});
```
4.使用 sort 方法,你可以很容易的按字母顺序或数字顺序对数组中的元素进行排序。
与我们之前用的数组方法仅仅返回一个新数组不同, sort 方法将改变原数组,返回被排序后的数组。
sort 可以把比较函数作为参数传入。比较函数有返回值,当 a 小于 b,返回一个负数;当 a 大于 b ,返回一个正数;相等时返回0。
```
//下面的例子将展示 sort 的使用,传入的比较函数把元素按照从小到大的顺序进行排列:
var array = [1, 12, 21, 2];
array.sort(function(a, b) {
return a - b;
});
```
5.你可以使用 reverse 方法来翻转数组。
var myArray = [1, 2, 3];
myArray.reverse();
6.concat 方法可以用来把两个数组的内容合并到一个数组中。
```
下面是一个拼接数组的例子,用concat 把 otherArray 拼接在 oldArray 的后面:
newArray = oldArray.concat(otherArray);
```