# 10-28
参考:
进度:
# 原子笔记
alert( NaN === NaN ); // false 通常使用 isNaN(value) Object.is(NaN,NaN)=== true Object.is(0,-0)=== false [NaN].indexOf(NaN) // -1(严格相等 === 对 NaN 无效)1
2
3
4
[NaN].includes(NaN) // true
- 使用`str.indexOf()`查找**所有**子字符串位置,简写。
```javascript
let pos = -1;
while ((pos = str.indexOf(target, pos + 1)) != -1) {
alert( pos );
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
~运算符。它将数字转换为 32-bit 整数(如果存在小数部分,则删除小数部分),然后对其二进制表示形式中的所有位均取反。- 对于 32-bit 整数,
~n等于-(n+1)。 if (~str.indexOf(...))读作 “if found”。(旧技巧)
- 对于 32-bit 整数,
寻找数字数组中的最大子数组,O(n):
function getMaxSubSum(arr) { let maxSum = 0; let partialSum = 0; for (let item of arr) { // arr 中的每个 item partialSum += item; // 将其加到 partialSum maxSum = Math.max(maxSum, partialSum); // 记住最大值 if (partialSum < 0) partialSum = 0; // 如果是负数就置为 0 } return maxSum; }1
2
3
4
5
6
7
8
9
10
11
12