如何合并不规则物体

时间:2018-12-27 11:51:54

标签: javascript object

我想合并2个对象。

一个对象是默认形式。

let data = {
  weight: '',
  DOB: '',
  gender: '',
}

另一个不规则,如下所示

let temp1 = {
   weight: '19.2',
}

let temp2 = {
   DOB: '1992-11',
}

let temp3 = {
   DOB: '1992-11',
   gender: 'Male',
}

let temp4 = undefined;

如果我合并datatemp1,结果应该是

let data = {
  weight: '19.2',
  DOB: '',
  gender: ''
}

如果我合并datatemp3,结果应该是

let data = {
  weight: '',
  DOB: '1992-11',
  gender: 'Male',
}

如果我合并datatemp4,结果应该是

let data = {
  weight: '',
  DOB: '',
  gender: ''
}

请给我一些建议以实现它。

谢谢。

2 个答案:

答案 0 :(得分:5)

您可以使用Object.assign()

let data = {
  weight: '',
  DOB: '',
  gender: '',
}


let temp3 = {
   DOB: '1992-11',
   gender: 'Male',
}

data = Object.assign(data, temp3);

或者如果您不想更改数据对象:

let data2 = Object.assign({}, data, temp3);

也可以使用散布运算符,基本上相同,只是原始数据对象不变:

data = { ...data, ...temp3 };

答案 1 :(得分:1)

通过jQuery,您可以使用$.extend()

let data = {
  weight: '',
  DOB: '',
  gender: '',
}
let temp1 = {
   weight: '19.2',
}

console.log($.extend(data,temp1))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

或按照以下说明使用JavaScript传播算子...

let data = {
  weight: '',
  DOB: '',
  gender: '',
}

let temp3 = {
   DOB: '1992-11',
   gender: 'Male',
}

data={...data,...temp3}
console.log(data)

如果键相同,则使用最严格对象的值