如何通过 javascript 中的两个对象创建新对象

How to create new object by two objects in javascript

我想知道如何通过 javascript 中的两个对象创建新对象。

遍历 obj1,并添加 obj2 值,在 javascript

中创建新对象
function getObject(obj1, obj2){
  let result={};
  Object.keys(obj1).forEach(key=>{
    if(key==="start" || key==="end"){
      result.time= obj1.start+"-"+obj1.end,
      result.qty= obj2.qty
    }
  }) 

}

var obj1 ={
  start: "16:01", end: "23:59", totalqty: 1065, totalamount: 8229170
}

var obj2 = {
  qty: 10, 
  amt: 120
}

预期输出

 {
   time: "16:01-23:59"
   val: 10 // represents obj2.qty,
   totalqty: 1065, 
   totalamount: 8229170,
   price: 120
 }

您可以编写一个函数并获得所需的属性:

var obj1 ={
  start: "16:01", end: "23:59", totalqty: 1065, totalamount: 8229170
}

var obj2 = {
  qty: 10,
  amt: 120
}

const merge = (obj1, obj2) => {
  return {
    time: obj1.start + '-' + obj1.end,
    val: obj2.qty,
    totalqty: obj1.totalqty,
    totalamount: obj1.totalamount,
    price: obj2.amt
  };
}

console.log(merge(obj1, obj2));

此外,您可以使用spread语法,但它会合并所有属性:

let obj1 ={
  start: "16:01", end: "23:59", totalqty: 1065, totalamount: 8229170
}

let obj2 = {
  qty: 10, 
  amt: 120
}

let merged = {...obj1, ...obj2};
console.log(merged );

或尝试使用 Object.assign() 并且它还合并了所有属性:

var obj1 ={
  start: "16:01", end: "23:59", totalqty: 1065, totalamount: 8229170
}

var obj2 = {
  qty: 10, 
  amt: 120
}

var result = Object.assign({}, obj1, obj2);
console.log(result);

Read more Object.assign() here.

您可以解构对象,重命名一些属性并return一个新对象。

const
    merge = ({ start, end, totalqty, totalamount }, { qty: val, amt: price }) =>
        ({ time: start + "-" + end, val, totalqty, totalamount, price}),
    obj1 = { start: "16:01", end: "23:59", totalqty: 1065, totalamount: 8229170 },
    obj2 = { qty: 10, amt: 120 };

console.log(merge(obj1, obj2));