js压缩数组对象

//解压
function unZipDigitalObject(a){
let arr=[]
const unzipObject = (props, values) =>
  props.reduce((obj, prop, index) => ((obj[prop] = values[index]), obj), {});

a.forEach((item,index)=>{
if(index>0){
arr.push(unzipObject (a[0],item))
}
})
return arr
}
let a=[{a:1,b:2,c:3},{a:1,c:3},{a:1,b:3},{b:1,c:3}];
//判断是不是数组对象
function isArrayObjiect(a){
let boolea=false
if(Array.isArray(a)&&a.length>0){
a.forEach(item=>{
if(typeof item=== 'object' &&
  item!== null &&
  !Array.isArray(item)){
boolea=true
}
})
}
return boolea
}
console.log(isArrayObjiect(a))
//压缩
function zipDigitalObject(a){
const zipObject = obj => [
  Object.keys(obj),
  Object.values(obj)
];
function fillMissingProperties(arr) {
    // 获取所有对象的所有属性
    const allProperties = arr.reduce((acc, obj) => {
        return [...acc, ...Object.keys(obj)];
    }, []);

    // 获取所有属性的唯一集合
    const uniqueProperties = [...new Set(allProperties)];

    // 创建一个函数来填充缺失的属性
    const fillObject = (obj) => {
        return uniqueProperties.reduce((acc, prop) => {
            acc[prop] = obj.hasOwnProperty(prop) ? obj[prop] : "";
            return acc;
        }, {});
    };

    // 使用 fillObject 函数填充所有对象
    return arr.map(fillObject);
}
a=fillMissingProperties(a)
let arr=[]
a.forEach((item,index)=>{
  if(arr.length<1){
 arr.push(...zipObject(item))
}else{
arr.push(zipObject(item)[1])
}
})
return arr
}
console.log(zipDigitalObject(a),unZipDigitalObject(zipDigitalObject(a)))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值