我需要一些javascript对象

时间:2018-03-18 06:32:12

标签: javascript object

我的问题如下。我有以下对象:

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_nuevovalor_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',

 },
}

如何实现这一结果?

1 个答案:

答案 0 :(得分:1)

这是一种方法。它假定valor_nuevovalor_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);