js将一个对象的值赋值给另一个对象

文章介绍了如何使用JavaScript的for...in循环和递归方法实现对象的深度复制,包括处理数组和嵌套对象的情况。提供了两个函数,一个用于将obj1的属性值复制到obj2,另一个实现了反向复制,即从obj2复制到obj1。
摘要由CSDN通过智能技术生成

您可以使用 for...in 循环遍历 obj1,并使用对象和数组的属性访问语法将其属性值复制到 obj2 中对应的属性中。如果 obj2 中存在嵌套的对象或数组,则需要递归地进行处理。以下是一个示例

function copyObject(obj1, obj2) {
  for (let key in obj1) {
    if (obj1.hasOwnProperty(key)) {
      if (Array.isArray(obj2[key])) {
        // 如果 obj2[key] 是一个数组,则递归地将 obj1[key] 复制到数组中的每个元素中
        obj2[key].forEach((item) => {
          copyObject(obj1[key], item);
        });
      } else if (typeof obj2[key] === 'object') {
        // 如果 obj2[key] 是一个对象,则递归地将 obj1[key] 复制到该对象中
        copyObject(obj1[key], obj2[key]);
      } else {
        // 否则直接将 obj1[key] 的值赋给 obj2[key]
        obj2[key] = obj1[key];
      }
    }
  }
}

在上面的代码中,我们定义了一个 copyObject() 函数,它接收两个参数 obj1obj2。该函数首先使用 for...in 循环遍历 obj1 的属性,并检测 obj2 中对应属性的类型。如果 obj2 中对应属性是一个数组,则递归地将 obj1 复制到数组中的每个元素中;如果 obj2 中对应属性是一个对象,则递归地将 obj1 复制到该对象中;否则直接将 obj1 的值赋给 obj2

在主程序中,我们首先定义了两个对象 obj1obj2,然后调用 copyObject() 函数将 obj1 中的属性值复制到 obj2 中对应的属性中。最后,我们打印更新后的 obj2

如果需要将 obj2 中的属性值复制到 obj1 中对应的属性中,可以修改 copyObject() 函数以实现反向操作。以下是一个示例代码:

function copyObject(obj1, obj2) {
  for (let key in obj2) {
    if (obj2.hasOwnProperty(key)) {
      if (Array.isArray(obj2[key])) {
        // 如果 obj2[key] 是一个数组,则递归地将 obj2[key] 复制到 obj1[key] 中的每个元素中
        obj2[key].forEach((item, index) => {
          if (obj1[key][index]) {
            copyObject(obj1[key][index], item);
          } else {
            obj1[key].push(item);
          }
        });
      } else if (typeof obj2[key] === 'object') {
        // 如果 obj2[key] 是一个对象,则递归地将 obj2[key] 复制到 obj1[key] 中
        if (!obj1[key]) {
          obj1[key] = {};
        }
        copyObject(obj1[key], obj2[key]);
      } else {
        // 否则直接将 obj2[key] 的值赋给 obj1[key]
        obj1[key] = obj2[key];
      }
    }
  }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值