首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何递归迭代JS对象,同时创建一个具有类似结构的新对象?

递归迭代JS对象并创建一个具有类似结构的新对象可以通过以下步骤实现:

  1. 首先,判断当前对象是否为基本数据类型(如字符串、数字、布尔值等),如果是,则直接返回该值作为新对象的属性值。
  2. 如果当前对象是一个数组,创建一个空数组作为新对象的属性值,并遍历原数组中的每个元素。对于每个元素,递归调用该方法,并将返回的新对象添加到新数组中。
  3. 如果当前对象是一个对象(非数组),创建一个空对象作为新对象的属性值,并遍历原对象的每个属性。对于每个属性,递归调用该方法,并将返回的新对象作为新对象的属性值。
  4. 返回新对象。

以下是一个示例代码:

代码语言:javascript
复制
function recursiveIterate(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj; // 基本数据类型直接返回
  }

  if (Array.isArray(obj)) {
    const newArray = [];
    for (let i = 0; i < obj.length; i++) {
      newArray.push(recursiveIterate(obj[i])); // 递归调用处理数组元素
    }
    return newArray;
  }

  const newObj = {};
  for (let key in obj) {
    newObj[key] = recursiveIterate(obj[key]); // 递归调用处理对象属性
  }
  return newObj;
}

// 示例用法
const originalObj = {
  name: 'John',
  age: 30,
  hobbies: ['reading', 'coding'],
  address: {
    city: 'New York',
    country: 'USA'
  }
};

const newObj = recursiveIterate(originalObj);
console.log(newObj);

该代码会递归迭代原始对象 originalObj,并创建一个具有相同结构的新对象 newObj。新对象中的每个属性值都是原始对象对应属性值的递归处理结果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券