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

在JS中减少具有深度文字键的对象数组

可以通过使用递归和遍历对象的方式来实现。以下是一个示例代码:

代码语言:txt
复制
function reduceDeepArray(obj) {
  if (Array.isArray(obj)) {
    return obj.map(reduceDeepArray);
  } else if (typeof obj === 'object') {
    return Object.keys(obj).reduce((acc, key) => {
      const value = obj[key];
      if (typeof value === 'object' && !Array.isArray(value)) {
        const reducedValue = reduceDeepArray(value);
        if (Object.keys(reducedValue).length !== 0) {
          acc[key] = reducedValue;
        }
      } else {
        acc[key] = value;
      }
      return acc;
    }, {});
  } else {
    return obj;
  }
}

// 示例用法
const deepArray = [
  {
    name: 'John',
    age: 30,
    details: {
      address: {
        street: '123 Main St',
        city: 'New York',
        country: 'USA'
      },
      occupation: 'Developer'
    }
  },
  {
    name: 'Jane',
    age: 25,
    details: {
      address: {
        street: '456 Oak Ave',
        city: 'Los Angeles',
        country: 'USA'
      },
      occupation: 'Designer'
    }
  }
];

const reducedArray = reduceDeepArray(deepArray);
console.log(reducedArray);

上述代码通过递归地遍历对象数组,将具有深度文字键的对象数组进行简化。输出结果如下:

代码语言:txt
复制
[
  {
    name: 'John',
    age: 30,
    details: {
      address: {
        street: '123 Main St',
        city: 'New York',
        country: 'USA'
      }
    }
  },
  {
    name: 'Jane',
    age: 25,
    details: {
      address: {
        street: '456 Oak Ave',
        city: 'Los Angeles',
        country: 'USA'
      }
    }
  }
]

在这个例子中,我们使用递归函数reduceDeepArray来遍历对象数组。当遇到数组时,我们使用map函数递归调用reduceDeepArray来处理每个数组元素。当遇到对象时,我们使用reduce函数来遍历对象的键,并根据键的值进行处理。如果值是对象并且不是数组,则递归调用reduceDeepArray来简化该对象。最后,返回简化后的对象。

这种方法可以有效地减少具有深度文字键的对象数组,并保留只包含非空子对象的层次结构。

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

相关·内容

领券