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

标签 javascript arrays loops object nested-object

我想知道如何在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.

关于javascript - 如何在javascript中通过两个对象创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63149517/

相关文章:

php - 无法在 cakephp 中保存来自 excel 的循环数据

c++ - 将数组的一个元素与整个另一个数组元素进行比较

给定两个函数的Javascript找到交集

javascript - 类别/标签选择器

javascript - 变量未返回所需的对象

Java - 如何在每次迭代时分割数组并有效地传递到函数中?

javascript - knockout 过滤

javascript - 递归展平数组(为什么我的函数不起作用?)

c - 二维数组增量

arrays - 使用 R 将变量名称 "QW1I5K20"的值存储在数组元素 Q[1,5,20] 中