这里面说的是我平常总结的
js方法不是es6出现的js方法
- 数组去重
/**
* 功能:数组去重
* 是否修改原数组:否
* 返回值:去重之后的数组
*/
function arrayWeightRemoval(arr) { //数组去重
return [...new Set(arr)]
}
- 对象构成的数组,来了新对象后,需要和数组中的对象进行对比,有更新,无添加
/**
* 功能:向数组中添加对象
* 1.如果数组中没有该对象 ==> 添加
* 2.如果数组中有该对象 ==> 更新
* 是否修改原数组:是
* 参数:
* targetArr:需要添加obj的数组
* selectObj:被添加到targetArr的对象
* compareAttr:用于对比的属性
* 返回值:array
*/
function arrayAddObj(targetArr, selectObj, compareAttr) {
let bool = targetArr.some(item => { //some循环可以自动终止有助于提高效率
if (item[compareAttr] == selectObj[compareAttr]) {
Object.assign(item, selectObj);
return true
}
});
!bool && targetArr.push(selectObj);
return targetArr;
}
- 将对象构成的数组,根据另一个数组进行拆分(一拆二)
/**
* 功能:根据传入的数组拆分目标数组
* 参数:
* allArr:需要拆分的数组
* compareArr:参照数组
* compareAttr:参照属性
* childArr1:拆分数组之后的子数组
* childArr2:拆分数组之后的子数组
* 是否改变原数组:否
* 返回值:对象
*/
function splitArr(allArr, compareArr, compareAttr, childArr1, childArr2) {
let temArr = compareArr.map(item => {
return item[compareAttr]
});
allArr.forEach(item => {
switch (temArr.includes(item[compareAttr])) {
case true:
childArr1.push(item)
break;
case false:
childArr2.push(item)
break;
}
})
return {
childArr1,
childArr2
}
}