SOURCE

//已经使用的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 命令行工具 X clear

                    
>
console