//解压
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)))
js压缩数组对象
最新推荐文章于 2024-10-15 09:57:04 发布