javascript - 我如何将密钥插入 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" },
];
解决方案
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))
推荐阅读
- riscv - RISC-V 中的寄存器使用
- gcc - 目标模式不包含“%”。停止。使用 $(shell sh -c "./ " ) 时(当前工作目录)
- python - 如何使用 autograd.grad 计算 PyTorch 中参数的 Hessian 损失
- javascript - 在 if 条件中丢弃空值的最佳方法是什么 - JavaScript
- linux - GNU Parallel 教程的声明中的“部分记录”是什么意思?
- python - 如何使用 matplotlib 获得稳定的绘图
- ruby-on-rails - 如何在 Rails 中设置 url 路由?
- r - 在不丢失缓存的情况下修改 rmarkdown 块输出?
- tensorflow - 如何将标量输入传递给 tf.keras 模型?
- mysql - 在mysql中导入大量数据时,chunk的重要性是什么?