扣了些代码,用作笔记
1、得到两个数组的交集
* @param {Array} arr1
* @param {Array} arr2
得到两个数组的交集, 两个数组的元素为数值或字符串
getIntersection = (arr1, arr2) => {
let len = Math.min(arr1.length, arr2.length)
let i = -1
let res = []
while (++i < len) {
const item = arr2[i]
if (arr1.indexOf(item) > -1) res.push(item)
}
return res
}
2、测试结果
console.log(getIntersection([1,2,3,4,5],[2,3,4,5,6,7,8,9,10]));
3、得到两个数组的并集
* @param {Array} arr1
* @param {Array} arr2
得到两个数组的并集, 两个数组的元素为数值或字符串【使用set集合特性】
getUnion = (arr1, arr2) => {
return Array.from(new Set([...arr1, ...arr2]))
}
4、测试结果
console.log(getUnion([1,2,3,4,5],[2,3,4,5,6,7,8,9,10]));
5、是否包含相同元素
* @param {Array} target 目标数组
* @param {Array} arr 需要查询的数组
some方法-返回true或false
const hasOneOf = (targetarr, arr) => {
return targetarr.some(_ => arr.indexOf(_) > -1)
}
6、测试
console.log(hasOneOf([1,2,3,4,5],[2,3,4,5,6,7,8,9,10]));
console.log(hasOneOf([1,2,3,4,5],[6,7,8,9,10]));
7、自定义循环数组
* @param {Array} arr1
* @param function 回调
首先进行判空
const forEach = (arr, fn) => {
if (!arr.length || !fn) return
let i = -1
let len = arr.length
while (++i < len) {
let item = arr[i]
//回调参数,数组项,下标,原数组
fn(item, i, arr)
}
};
8、测试
forEach([1,2,3,4,5,6],function (a,c,e) {
console.log(a);
console.log(c);
console.log(e);
});
测试结果如图:
9、实现方法有多种后续更新~