javascript - 递归 trim 对象中所有元素的更好方法?

标签 javascript object recursion lodash

如果我有一个对象,例如

const obj = {
    field: {
        subfield: {
            innerObj: { a: ' asdasd  asdas . ' },
            innerArr: ['  s  ', '  ssad . '],
            innerArrObj: [ { b: '   adsad  ' } ],
        }
    }
}

我想出了这样的东西,
const trimFields = (data) =>
  _.mapValues(data, (element, k) =>
    _.isArray(element)
      ? element.map((value) =>
          _.isObject(value) ? trimFields(value) : trimText(value)
        )
      : _.isObject(element)
      ? trimFields(element)
      : trimText(element)
  );

但我想知道是否有更好/更有效的方法来做到这一点?

JSFiddle

最佳答案

我会直接在函数中切换数组/对象/其他,简化递归调用:

 const trimFields = (data) =>
    _.isArray(data) 
      ? data.map(trimFields)
      :  _.isObject(data) 
        ? _.mapValues(trimFields)
        : trimText(data);

关于javascript - 递归 trim 对象中所有元素的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61098396/

相关文章:

javascript - Github 页面部署问题

java - 有没有一种简单的方法来加密java对象?

MySQL递归查找所有 parent

JavaScript 数组递归

javascript - 运行 react-scripts start 后如何停止?

javascript - 单击按钮时触发 ctrl+s

JavaScript 对象对于所有版本的 Google Chrome 都是唯一的?

java - 如何从字符串创建变量名?

javascript - 获取表单元素的索引

javascript - 直接访问 JSON 子对象的更好方法