javascript - 遍历一个对象,只选择一个特定的字段

标签 javascript

我想遍历我的input对象,只保留fields键下的数据。

    const input = {
      fields: {
        title: 'hello',
        footer: {
          fields: {
            title: 'foo',
            text: 'bar'
          }
        }
      }
    }

    const expected = {
      title: 'hello',
      footer: {
        title: 'foo',
        text: 'bar'
      }

到目前为止,这是我对 clean 函数的实现

function clean(obj) {
  Object.keys(obj).map(key => {
    if (typeof obj[key] === 'object') {
      obj[key] = clean(obj[key])
    }
  })
}

如何让我的 clean 函数按预期改变输入?

最佳答案

应该这样做:

const input = {
  fields: {
    title: 'hello',
    footer: {
      fields: {
        title: 'foo',
        text: 'bar'
      }
    }
  }
};

function traverse(obj) {
  if (typeof obj !== 'object') return obj;
  if (obj.fields) return traverse(obj.fields);
  for (var i in obj) obj[i] = traverse(obj[i]);
  return obj;
}

console.log(traverse(input));

关于javascript - 遍历一个对象,只选择一个特定的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48788071/

相关文章:

javascript - Chrome 是否支持 "addEventListener"?

javascript - Jquery 上传预览前的最大高度和最大宽度验证

javascript - 无法使 route.get 在 Node 中工作

javascript - 无法从 cssnano 配置中关闭 colormin 优化

javascript - 缩小 JavaScript 是保护源代码的唯一方法吗?

javascript - 服务中的 Angular 2 和 rxjs 主题未在组件上更新

Javascript 意外结果

javascript - RXJS 修改订阅者顺序

javascript - 使用 javascript setTimeout 会导致对象内的数据丢失?

javascript - 从外部应用程序到 Spring Security 的 Ajax 身份验证