1)forEach中return有效果吗?如何中断forEach循环?
在forEach中用return不会返回,函数会继续执行。
let nums = [1, 2, 3];
nums.forEach((item, index) => {
return;//无效
})
中断方法:
使用try监视代码块,在需要中断的地方抛出异常。
官方推荐方法(替换方法):用every和some替代forEach函数。every在碰到return false的时候,中止循环。some在碰到return true的时候,中止循环
2)JS判断数组中是否包含某个值
1 、var arr=[1,2,3,4];
var index=arr.indexOf(3);
console.log(index);
2、
var arr=[1,2,3,4];
if(arr.includes(3))
console.log("存在");
else
console.log("不存在");
3、
var arr=[1,2,3,4];
var result = arr.find(item =>{
return item > 3
});
console.log(result);
4、
var arr=[1,2,3,4];
var result = arr.findIndex(item =>{
return item > 3
});
console.log(result);
3)JS中flat---数组扁平化
4)数组中的高阶函数
一个函数就可以接收另一个函数作为参数或者返回值为一个函数,这种函数就称之为高阶函数。
map、reduce、filter、some\every。。。
5)拷贝
这就是浅拷贝的限制所在了。它只能拷贝一层对象。如果有对象的嵌套,那么浅拷贝将无能为力。但幸运的是,深拷贝就是为了解决这个问题而生的,它能 解决无限极的对象嵌套问题,实现彻底的拷贝。
浅拷贝到底有多少种方式?
1、const shallowClone = (target) => {
if (typeof target === 'object' && target !== null) {
const cloneTarget = Array.isArray(target) ? []: {};
for (let prop in target) {
if (target.hasOwnProperty(prop)) {
cloneTarget[prop] = target[prop];
}
}
return cloneTarget;
} else {
return target;
}
}