数组对象去重
数组对象去重,在从读取数据的时候,由于用户不断地新增数据,会导致依据 pageNo 获取回来的数据不准确出现重复,这时候就要用到数据对象去重,个人觉得最常用最好用的肯定是对象变量去重法
对象变量去重法
function deWeight(data, primaryKey) {
let obj = {}
data.forEach(item => {
obj[item[primaryKey]] = item[primaryKey]
})
return Object.values(obj)
}
复制代码
深拷贝
深拷贝如果你足够的自信不犯错,那就直接用懒狗JSON格式化来深拷贝
JSON 格式化深拷贝
function deepClone(data) {
return JSON.parse(JSON.stringify(data))
}
复制代码
递归深拷贝
function deepClone(obj) {
if (typeof obj !== 'object' || obj === null) {
return data
}
// 初始化返回结果
let result = obj instanceof Array ? [] : {}
// 遍历判断
for (let key in obj) {
// 保证 key 不是原型的属性
if (obj.hasOwnProperty(key)) {
// 递归
result[key] = deepClone(obj[key])
}
}
return result;
}
复制代码
数组对象排序
有时候业务逻辑过多的话还是把升降序封装一下比较好
升序
function ascendingSort(data, key) {
return data.sort((a, b) => (a[key] - b[key]))
}
复制代码
降序
function descendingSort(data, key) {
return data.sort((a, b) => (b[key] - a[key]))
}
复制代码
数组对象求和
reduce
封装reduce,理由如上
function arraySum(data, key) {
return data.reduce((prev, item) => prev + item[key], 0)
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END