const ary = ['a', 'b', 'c'];
// 最基本的方式, 只能遍历下标有序递增的数组
for (let i=0; i<ary.length; i++) {
console.log(i, ary[i]); // 0 a 1 b 2 c
}
// in:每遍历一次数组指针向后移动一位, 并得到当前数组元素值的下标, 可以通过 ary[key] 来访问数组元素值
for (let key in ary) {
console.log(key, ary[key]); // 0 a 1 b 2 c
}
// of:每遍历一次数组指针向后移动一位, 并得到当前数组元素的值, 处理二维数组时极为方便
for (let value of ary) {
console.log(value); // a b c
}
Js还为数组对象内置了多种迭代方法, 处理数组时极为方便
/**
* forEach(function)
*
* 该方法接受一个函数作为参数, 该函数拥有两个参数, 分别为数组的值、键
* 该方法没有返回值
*/
ary.forEach((value, key) => {
console.log(key, value); // 0 a 1 b 2 c
})
/**
* map(function)
*
* 该方法接受一个函数作为参数, 该函数拥有两个参数, 分别为数组的值、键
* 可以在传入的函数中返回相应的值,你每次迭代时返回的值会被map方法组装成一个新数组作为返回值返回
*/
var result = ary.map((value, key) => {
return value + '_facesoho.com';
})
console.log(result); // ['a_facesoho.com', 'b_facesoho.com', 'c_facesoho.com']
550JavaScriptWindowHistory
549JavaScriptMath(算数)
对于伪随机数,JS 有很多种玩法来生成我们所需要的伪随机数。
根据上下限生成随机数:
根据概率随机生成 bool 值:
随机生成指定字符:
随机生成字符的另一种玩法:
随机从数组中取出一个东东:
548JavaScriptArray(数组)
数字索引与非数字索引
JavaScript 数组只支持数字索引,非数字索引指的是对象的属性了。
JavaScript 的数组可以看做是特殊的对象(object),对象的属性有两种表示方法。查看以下实例:
实例中由于你没有给数组的元素赋值,所以 a 数组的长度也没有被创建出来,此时 a.length 输出结果为 0。
在最后一行代码中数组元素 a[2] 赋值了,此时 JavaScript 会给数组 a 创建一个长度为 3 的空间,并在第三个元素中赋以3,但是元素1和元素2都没有赋值,所以此时a[0]和a[1]是没有值的。
如果要使用的是一个完全由“字符串下标”组成的数组,那还是将其声明为一个 Object 类型的对象要更好一些。
Javascript 数组下标值的范围为 0 ~ 232。对于任意给定的数字下标值,如果不在此范围内,Javascript 会将它转换为一个字符串,并将该下标对应的值作为该数组对象的一个属性值而不是数组元素,例如 array[-1] = "yes" 其实就相当于给 array 对象添加了一个名为 -1 的属性,属性值为 yes。如果该下标值在合法范围内,则无论该下标值是数字还是数字字符串,都一律会被转化为数字使用,即 array["100"] = 0 和 array[100] = 0 执行的是相同的操作。
547JavaScriptArray(数组)
Js 中为数组提供了多种遍历方式
Js还为数组对象内置了多种迭代方法, 处理数组时极为方便
546JavaScriptArray(数组)
遍历一维数组: 依次访问数组中每个元素,对每个元素执行相同的操作
遍历关联数组: for in 循环
其实: js底层,一切对象都是关联数组:
比如: 索引数组,window等
遍历二维数组: 外层循环遍历行,内层循环遍历列