- 改变原数组的方法
pop、push、splice、fill、reverce、shift、unshift、sort
- 填充一个长度为10,元素为a的数组
方法一:
Array.from({length:10}, (item)=>'a')
方法二:
new Array(10).fill("a")
- 求sum
return array.length > 0 ? array.reduce((total, currentValue)=>{return total+currentValue})
- 异或运算
a^0 = a
a^a = 0
a ^ b ^ a = b
- 小数点保留几位
n = 111
n.toFixed(5)
- 返回字符串的某个字符编码
s = 'abcde';
s.charCodeAt(3);
- substr 、substing 、slice
s = 'abcde';
//substr(startIndex, length)
s.substr(1,2); // "bc"
//substring(startIndex, endIndex)
s.substring(1,2); // "b"
s.substring(1,0); // "a"
s.substring(1,1);// ""
s.substing(2,0); //"ab"
s.substring(2,2);// ""
s.substing(2,3); //"c"
//slice 和 substring相似,但是,endIndex 小于等于 startIndex 的时候,返回空字符串
s.slice(1,3) //"bc"
s.slice(2,1) // ""
s.slice(2,2) // ""
s.slice(2,3) // "c"
当第二参数为负数时,substring 都归于0作为处理
s.substring(2,-1); //"ab"
s.substring(2, 0); //"ab"
s.substring(3,-1); //"abc"
s.substring(3, 0); //"abc"
当第二参数为负数时,substr最后一位的前一位为-1开始算。
s.slice(2,-1); //"cd"
s.slice(2,-2); // "c"
s.slice(2,-3); // ""
s.slice(2,-4); // ""
substring,第二参数为正时,图解
substing(1,2) 和 substring(2,1) 取得的結果都是一樣的。
- parseInt
n = 111
parseInt(n, 2);//7
a = 0.0000005
parseInt(a); // 5
// 0.000005 -> 0.000005 -> 0
// 0.0000005 -> 5e-7 -> 5
// 0.00000005 -> 5e-8 -> 5
a = "0.0000005"
parseInt(a); // 0
parseInt的传参为数字时,会先转化成string,再转成整数
- 时间戳
new Date("2019-01-02").getTime(); //1546387200000
+new Date("2019-01-02");//1546387200000
- N次方
10 ** 2 ; //100
10 ** 3 ; //1000
10 ** 4 ; //10000
- 交换赋值
let a = 1;
let b = 2;
[a, b] = [b, a];
- 解构
//可设置默认值
const arr = [1,4];
const [a, b=2, c=8] = arr;
//a,b,c 1,4,8
//别名
const arr = [1, 4, 8];
const {0:a, 2:b} = arr;
// a, b 1,8
- 删除个别对象
const obj = {x:0 , y: 2, z: 4};
const {x, ...rest} = obj;
//rest {y: 2, z: 4}
- 精度问题
0.1+0.2 === 0.3 -> false
0.7 + 0.1 = 0.7999999999999999
- Object.assign的用法
- 为对象添加属性
Object.assign(target, {a, b});//为 target 添加 a、b属性
- 为对象添加方法
- 克隆对象
Object.assign(target, origin);// 注意这边是浅拷贝
- 将多个对象合并到某个对象
- 为属性指定默认值
Object.assign({}, DEFAULT, options)
- 字符串填充
- padStart
- padEnd
'123'.padStart(10, 0); // "0000000123"
'123'.padEnd(10, 'a2'); // "123a2a2a2a"
- reduce 合并对象和对象数组
function link(obj, keyName, valName) {
return obj.reduce((l, item)=>{
return {
...l,
[item[keyName]]: item[valName]
}
}, {})
}
let arr = [
{name: 'lln', count: 2},
{name: 'linln', count: 0},
{name: 'linlini', count: 4},
]
link(arr, 'name', 'count');
// {lln: 2, linln: 0, linlini: 4}
- 获取数组对象的单列数据
function arrayColumn(array, keyName) {
return Array.from(array, ({[keyName]:value}) => value);
}
let arr = [
{name: 'lln', count: 2},
{name: 'linln', count: 0},
{name: 'linlini', count: 4},
]
arrayColumn(arr, 'name');
// ["lln", "linln", "linlini"]
- 过滤空值
array.filter(Boolean)
//例如:
['', '122', false, true, undefined, '222', null, ''].filter(Boolean)
// ["122", true, "222"]