JavaScript 重点提炼
JS中字符串方法有哪些?
var str = "how are you";
var word = str.split(" "); // ["how","are","you"]
slice()和substring()区别
负数截取,slice支持负数截取,而substring不支持。
JS 数组方法
JS实现数组去重
已知数组arr,对该数组进行去重,去重后的数组用uniqueArray代替。
1 利用ES6中的Set方法去重
let uniqueArray = Array.from(new Set(arr));
let uniqueArray = [...new Set(arr)];
2 some()方法去重
some()方法判断数组中是否存在满足条件的项,满足返回true。定义新数组承接未重复数据,遍历原始数组的时候,用新数组来判断数据是否已经出现过。
function uniqueArr(arr) {
// 新数组
let result = [arr[0]];
for(let i = 1; i < arr.length; i++) {
// 判断结果数组中是否存在一样的值,若果没有的话则将数据存入结果数组中
if(!result.some(val => {arr[i] === val})) {
result.push(arr[i]);
}
}
return result;
}
3 双重for循环+splice去重
第一层循环确保数组中的每一项都能被比较,第二层循环确保被比较项后的每一项都能跟被比较项比较,重复则splice(index,1)删除重复元素。
4 filter()+indexOf()方法去重
数组的当前元素在原始数组中的第一个索引==当前索引值,则第一次出现,即唯一。
function uniqueArr(arr) {
return arr.filter((item, index, arr)=>{
return arr.indexOf(item, 0) === index;
})
}
5 ES6中Map方法去重
通过创建一个空Map数据结构,然后遍历需要去重的数组,最后把数组的每一个元素作为key存到Map中,由于Map中不会出现相同的key,所以最后得到的结果就是数组去重后的所有元素。
function uniqueArr(arr) {
let map = new Map();
let result = [];
for (let i = 0, i < arr.length; i++) {
if (map.has(arr[i])) {
// 判断是否存在key
map.set(array[i], true);
} else {
map.set(array[i], false);
result.push(array[i]);
}
}
return result;
}
reduce()实现数组求平均值
// arr为已知数组,要求数组每项元素为数字类型Number
arr.reduce((acc, current) => acc + current) / arr.length
二维数组定义:
var arr = new Array(10); //表格有10行
for(var i = 0;i < arr.length; i++){
arr[i] = new Array(10).fill(0); //每行有10列
}
JS 进制转换
进制分:十进制、二进制、十六进制、八进制。
在JavaScript内部的默认情况下,二进制、十六进制、八进制字面量数值,都会自动转为十进制进行运算。
### 十进制转其他进制
toString()转换 => x.toString(n) - x十进制数字,n转换的进制(2,8,16,32)
### 其他进制转十进制
parseInt()转换 => parseInt(m,n) - m转换的数,n转换的数是多少进制的,如parseInt(x,2)代表将二进制数x转换为十进制
### 其他进制之间的转换 - 先转十进制,再转其他进制
// 表示将二进制的x转换为十六进制
parseInt(x,2).toString(16))
// 表示将十六进制的x转换为二进制
parseInt(x, 16).toString(2)
JS Map
Map 对象存有键值对,其中的键可以是任何数据类型。
Map 对象记得键的原始插入顺序。
Map 对象具有表示映射大小的属性。
注意:Map默认存储中,当存在key值相同时,后存储的key值对应的value会默认覆盖先前已有的value值。
JavaScript中按值对Map进行排序
使用展开语法 (...) 获取 Map 条目的数组。
在数组上调用 sort() 方法。
将结果传递给 Map() 构造函数。
// 按值升序排序(从低到高)
const sortNumAsc = new Map([...map2].sort((a, b) => a[1] - b[1])); // 值为数字类型
const sortNumAsc = new Map([...map2].sort((a, b) => a[1] > b[1] ? 1 : -1)); // 值为字符类型
// 同理,按键升序排序(从低到高)
const sortKeyAsc = new Map([...map2].sort((a, b) => a[0] - b[0]));
JS Set
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
Set中的特殊值
Set 对象存储的值总是唯一
的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
+0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
undefined 与 undefined 是恒等的,所以不重复;
NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复
遍历:forEach、for of
JS正则表达式
未完待续……
JavaScript区分元素是字符还是数值类型的方法
isNaN
:检查其参数是否是非数字值。
如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
typeof
:使用 typeof 操作符来检测变量的数据类型。
string、number、boolean、object。
在JavaScript中,数组是一种特殊的对象类型。 因此 typeof [1,2,3,4] 返回 object。
JS 数学Math相关
Math.cbrt()
:求一个数的立方根。
Math.abs()
:求一个数的绝对值。
Math.pow(m,n)
:求m的n次方。
- 感谢你赐予我前进的力量