1.js的计算方法
1.1.reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
let sumA = A.reduce((a,b)=>{
return a+b
},0)
reduce有一个回调参数和初始值
a,代表初始值为0,b代表数组的每一项,由此相加
获取A数组和
1.2 sort() 方法数组排序,数组中的每个值(从左到右)开始排列,最终排列成数组。
let sumA = A.sort((a,b)=>{
return a-b
})
A数组排序
2.字符串转数字会自动去除字符串前面的0
3.代码规范:尽量用const赋值,可以更改对象和函数的值,单一值需要变换用let声明,
在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量。
const优于let有几个原因。一个是const可以提醒阅读程序的人,这个变量不应该改变;另一个是const比较符合函数式编程思想,运算不改变值,只是新建值,而且这样也有利于将来的分布式运算;最后一个原因是 JavaScript 编译器会对const进行优化,所以多使用const,有利于提供程序的运行效率,也就是说let和const的本质区别,其实是编译器内部的处理不同。
4.find()返回数组中符合条件的第一个值,没有就返回undefined
- 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。 ```javascript var ages = [3, 10, 18, 20];
function checkAdult(age) { return age >= 18; }
function myFunction() { document.getElementById(“demo”).innerHTML = ages.find(checkAdult); }//18
<a name="T8RZ5"></a>
### 5.作用域链是从下往上找的,都没有才是window上挂载的变量
例如
```javascript
let i =10
function ad(){
let i =20
function add(){
i += 10 //往上找到i=20,加10 等于30,如果没有就找全局i=10就等于20
console.log(i) //30
}
add();
console.log(i)//20 如果没有就找全局i=10就等于10
}()
6.数组扁平化
1.//数组扁平化
reduce()递归方法
let arr = [1, [2, 3, [4, 5]]];
function flat(arr){
return arr.reduce((result,item)=>{
return result.concat(Array.isArray(item)?flat(item):item)//通过递归将数组里的数组整合为一个在再最外面整合
},[])
}
console.log(flat(arr));
2.直接递归
let arr = [1, [2, 3, [4, 5]]];
function flat(arr){
let result = [];
arr.map(item => {
if(Array.isArray(item)){
result = result.concat(flatten(item));//返回新数组需要接收
}else{
result.push(item)
}
})
return result;
}
console.log(flat(arr));
3.扩展运算符
let arr = [1, [2, 3, [4, 5]]];
function flatten(arr) {
while(arr.some(item=>Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flatten(arr));