首页 > 解决方案 > 我如何将密钥插入 js 数组以转换为 json

问题描述

我有以下平面数组

let data = [
    ["0000001", "SCHOLL", "S", "CEDULA", "NOESTUDIANTE", "GRADO"],
    ["0000002", "MOVIL", "S", "CELULAR", ""],
    ["0000003", "ECHALE", "S", "CONTRATO", "NOCLIENTE", ""],
];

我有以下函数,但是这个函数在另一个引用数组中返回一个数组,所以我希望能够将键分配给平坦的值,我已经尝试了一切,但我不知道很好怎么做,如果你能帮助我,请感谢你的意见

function infoTransform(values) {
    return values.map((value) => {
        let [service, name, ...references] = value;
        service = parseInt([value[0]]);
        references = references.filter((reference) => reference !== "");
        references = references.splice(1);
        let Myjson = JSON.stringify(references);
        return {
            service,
            name,
            Myjson,
        };
    });
}
console.log(infoTransform(data));

我希望它会向我返回这样的东西

let data = [
    {
        id: 1,
        name: "SCHOLL",
        REF1: "CEDULA",
        REF2: "NOESTUDIANTE",
        REF3: "GRADO",
    },
    { id: 2, name: "MOBILE", REF1: "CEDULA" },
    { id: 3, name: "EPALEE", REF1: "NOFOOD", REF2: "FOOBAR" },
];

标签: javascriptnode.js

解决方案


let data = [
    ["0000001", "SCHOLL", "S", "CEDULA", "NOESTUDIANTE", "GRADO"],
    ["0000002", "MOVIL", "S", "CELULAR", ""],
    ["0000003", "ECHALE", "S", "CONTRATO", "NOCLIENTE", ""],
];

function infoTransform(values) {
    return values.map(([id, name, _, ...refs]) => ({
        id: parseInt(id),
        name,
        ...Object.fromEntries(
            refs.filter(r => r !== "")
                .map((r, i) => [`REF${i + 1}`, r])
        )
    }))
}

console.log(infoTransform(data))

推荐阅读