//已经使用的id
let mapId = {}
// 生成唯一值 返回生成的唯一值
function randomId() {
const id = Math.random().toString(36).slice(2);
if (mapId[id]) {
return randomId();
}
mapId[id] = true;
return id;
}
// 向对象中添加数据 返回最新的数据
function addItem(key, obj) {
let id = randomId()
key[id] = { ...obj }
return key
}
function pushForList(key, keys, obj) {
if (keys) {
let tempData = {};
// 按照那个字段循环都可以 . 因为长度肯定是一样的
//获取循环的最大长度
let maxLength = obj[keys[0]].length;
for (let i = 0; i < maxLength; i++) {
//对每个数组进行循环
keys.forEach((item, index) => {
tempData[item] = obj[item][i];
});
addItem(key, { ...tempData });
tempData = {};
}
return key
}
}
// 需要转成对象的数组
let nameList = ['张三', '李四', '王五']
// 生成的对象
let nameObj = {}
/**
* 第一个参数是生成的对象
* 第二个参数是一个数组 生成对象中需要包含什么
* 第三个参数是一个对象,分别对应第二个参数中的数据
*/
// pushForList(nameObj, ['name'],{name:nameList})
let aa = pushForList(nameObj, ['name'], { name: nameList })
console.log('aa', aa)
// console.log('nameObj',nameObj)
// 需要生成对象的数据
let ageObj = {}
let ageList = [1, 2, 3]
// pushForList(ageObj, ['name','age'],{name:nameList,age:ageList})
let bb = pushForList(ageObj, ['name', 'age'], { name: nameList, age: ageList })
console.log('bb', bb)
// console.log('ageObj',ageObj)
let obj = {
aaa: { name: "1" }
}
let ac = addItem(obj, { age: 12 })
console.log('ac', ac)
console