javascript - 递归修剪对象中所有元素的更好方法?
问题描述
如果我有一个像这样的对象,
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)
);
但我想知道是否有更好/更有效的方法来做到这一点?
解决方案
我会直接在函数中切换数组/对象/其他,简化递归调用:
const trimFields = (data) =>
_.isArray(data)
? data.map(trimFields)
: _.isObject(data)
? _.mapValues(trimFields)
: trimText(data);
推荐阅读
- javascript - 使用Javascript删除sql数据库上的行
- android - 未调用 Layout-sw400dp。多屏支持
- html - 在 Bootstrap 4 中使 3 列宽度为 75% 并居中对齐
- java - Spring Cloud Gateway 使连接过早关闭
- javascript - Three.js 错误 - '无法读取未定义的属性'旋转''
- opencart - 如何将 Aramex Shipping 添加到 opencart
- react-native - 调试反应原生项目
- android-studio - 启动 Androir Studio 3.0.1 时出现模拟器错误
- php - 点击广告后如何在页面上发送用户
- java - Jersey Http Server:为每个 http 方法添加参数