JavaScript如何将对象中的null/undefined值设置为空字符串

4

我有一个对象,其中一些字段的值为nullundefined。是否有一种快捷简便的方法,可以使用Javascript或Lodash将这些值更改为空字符串''

例如输入:

{
  a: '23',
  b: 'Red',
  c: null,
}

示例输出:

{
  a: '23',
  b: 'Red',
  c: '',
}

注意:我不想删除这些具有nullundefined值的字段,我想将它们保留在对象中,但将它们的值更改为空字符串''

谢谢

2个回答

3
你可以使用 Object.keys().forEach() 的组合:
Object.keys(yourObject).forEach(function(key, index) {
  if (this[key] == null) this[key] = "";
}, yourObject);
==比较运算符会同时检查nullundefined。将yourObject作为第二个参数传递给.forEach()将导致回调函数内的this绑定到它上面。 编辑 —— 最初我将其编写为一个=>函数,但这样做是行不通的,因为我们需要this以传统方式工作。

1
@tnoel999888,如果没有看到您的实际代码,帮助可能会很困难。您可以将其编辑到问题中。 - Pointy
好的,很公正。我编辑了帖子并包含了我的实际代码。 - tnoel999888
1
@tnoel999888 哦,抱歉,我的错;它需要一个旧式函数。我会更新答案。 - Pointy
@tnoel999888 抱歉,由于我面临着各种特定的限制,我在自己的代码中不使用=>函数,所以我并不习惯思考它们的工作原理等。 - Pointy
谢谢,现在可用了!接受的答案。还有一个问题,我可以只有一个参数 field,而不是 (key, index) 这两个参数吗?然后代码变成 if (field == null) field = ""; - tnoel999888
@tnoel999888 不行,那样做不起作用:你需要代码明确地更新对象的属性值。这有点丑陋。但是,你不需要 index 参数,因此可以省略它,因为该函数不使用它。 - Pointy

3
你可以使用_.mapValues()来迭代值并替换它们,使用_.isNil()来检查一个值是否为nullundefined。"最初的回答"

const obj = {
  a: '23',
  b: 'Red',
  c: null,
}

const result = _.mapValues(obj, v => _.isNil(v) ? '' : v)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>


非常好,谢谢!接受这个答案,因为它更短,更容易阅读。 - tnoel999888

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接