我的问题如下。我有以下对象:
let obj = {
id: 1404,
fecha: 2018-03-18T06:47:28.365Z,
tabla: 'usuarios',
operacion: 'UPDATE',
usuario: 'user',
valor_nuevo:
{ nombres: 'John',
apellidos: 'smith',
direccion: 'some cool place' },
valor_anterior:
{ nombres: 'name',
apellidos: 'last',
direccion: 'addres' }
}
我需要基本上采用嵌套对象valor_nuevo
和valor_anterior
,提取每个元素,复制未嵌入的元素,并将它们分配给嵌套对象中提取的元素的新对象。像这样:
obj = {
{
id: 1404,
fecha: 2018-03-18T06:47:28.365Z,
tabla: 'usuarios',
operacion: 'UPDATE',
usuario: 'user',
valor_nuevo: 'John',
valor_anterior: 'name',
},
{
id: 1404,
fecha: 2018-03-18T06:47:28.365Z,
tabla: 'usuarios',
operacion: 'UPDATE',
usuario: 'user',
valor_nuevo: 'smith',
valor_anterior: 'last',
},
{
id: 1404,
fecha: 2018-03-18T06:47:28.365Z,
tabla: 'usuarios',
operacion: 'UPDATE',
usuario: 'user',
valor_nuevo: 'some cool place',
valor_anterior: 'address',
},
}
如何实现这一结果?
答案 0 :(得分:1)
这是一种方法。它假定valor_nuevo
和valor_anterior
具有相同数量的具有匹配值的键:
let obj = {
id: 1404,
fecha: '2018-03-18 T06:47:28.365 Z',
tabla: 'usuarios',
operacion: 'UPDATE',
usuario: 'user',
valor_nuevo: {
nombres: 'John',
apellidos: 'smith',
direccion: 'some cool place'
},
valor_anterior: {
nombres: 'name',
apellidos: 'last',
direccion: 'addres'
}
};
var base = Object.assign({}, obj),
nuevo = base.valor_nuevo,
anterior = base.valor_anterior,
ret = [];
delete base.valor_nuevo;
delete base.valor_anterior;
for (key in nuevo) {
ret.push(Object.assign({
valor_nuevo: nuevo[key],
valor_anterior: anterior[key]
}, base));
}
console.log(ret);