- Math.floor() //向下取整
JS 测试 array 是否相等
发表于
更新于
首先判断两个数组是否相等时不能直接使用 ==
1 | var array1 = [] |
对于对象来说,== 比较的是两个对象是否为同一个对象。数组属于对象类型,尽管数组元素是相同的,但这两个数组属于不同的对象,所以 == 比较为false.
四种比较方式
数组简单比较
如果数组里的元素是标量,非 object 类型,可以使用 == 比较数组里的元素:1
2
3scalarArrayEquals(array1,array2) {
return array1.length==array2.length && array1.every(function(v,i) { return v === array2[i]})
}嵌套数组比较
如果数组是多层嵌套,数组的基本元素也为标量。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20arrayEquals(array1, array2) {
if(!(array1 || array1)) {
return false
}
// 先比较长度
if (array1.length != array2.length)
return false
for (var i = 0, l=array1.length; i < l; i++) {
// 检查是否为内嵌数组
if (array1[i] instanceof Array && array2[i] instanceof Array) {
// 递归比较数组
if (!arrayEquals(array1[i],array2[i]))
return false
} else if (this[i] != array[i]) { //标量比较
return false
}
}
return true
}Lodash 或 Underscore 比较数组(推荐)
如果数组的元素可能为 object,可以考虑使用 Lodash 或者 Underscore。它们已经实现了对象的深度比较,包括数组。
使用 Lodash 或 Underscore 比较数组或对象很简单:1
2_.isEqual(array1, array2) //相等返回true,否则返回false
_.isEqual(object1, object2) //转为字符串比较数组
除了上面的比较方法外,还可以把数组转换为字符串后,比较字符串。array1.toString() === array2.toString()
或者
JSON.stringify(array1) === JSON.stringify(array2)
但相对上面几种方式,转换为字符串后再比较的性能是比较差的。其中以 JSON 转换为字符串的性能最差。
JS 常用数组方法
发表于
更新于
1. 复制数组
1 | arr.slice(0) |
2. 数组长度
1 | arr.length |
3. 清空数组
1 | arr.length = 0 |
4. 将“类似数组的对象”变成真正的数组
1 | var arr = Array.protoytpe.slice.call(arrLike) |
5. 在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度
1 | var arr = [1, 2, 3] |
6. 删除数组的最后一个元素,并返回该元素
1 | var arr = [1, 2, 3] |
7. 判断是否为数组
1 | // 1. instanceof 运算符 |
8. 在数组的开头添加一个或多个元素,并返回添加新元素后的数组长度
1 | var arr = [1, 2, 3] |
9. 删除数组的第一个元素,并返回该元素
1 | var arr = [1, 2, 3] |
10. 翻转数组
1 | var arr = [1, 2, 3] |
11. 数组排序
1 | // 1. 升序 |
12. 数组索引
1 | var arr = [1, 2, 3, 2] |
13. 数组去重
1 | function unique(arr) { |
14. 数组转换字符串
1 | var arr = ['h', 'l', 'l'] |
15. 连接两个数组
1 | var arr = [1, 2, 3, 4] |
16. 数组截取
1 | var arr = ['h', 'l', 'l', 'c'] |
17. 数组删除
1 | var arr = ['h', 'l', 'l', 'c'] |
JS 常用数组方法
发表于
更新于
JS 利用函数做循环条件
发表于
更新于
Example:
1 | var stepCondition = function(current, end, step) { |
Lantern 共享 IOS
发表于
更新于
- 关闭已开启的 Lantern;
- 按 win + r 输入 cmd 进入命令提示符,然后输入 ipconfig 查看并记下当前网络地址;
- 在桌面找到 Lantern 图标,右键属性,在目标栏后先键入一个空格,然后加上参数 -addr=地址:8787 (把汉字处替换为你当前网络ip地址);
- 重新打开 Lantern,允许通过防火墙;
- 手机连接该网络并手动设置代理,服务器为你当前网络地址,端口为 8787。
自然码双拼
发表于
更新于