我有一个对象,其中一些字段的值为null
或undefined
。是否有一种快捷简便的方法,可以使用Javascript或Lodash将这些值更改为空字符串''
?
例如输入:
{
a: '23',
b: 'Red',
c: null,
}
示例输出:
{
a: '23',
b: 'Red',
c: '',
}
注意:我不想删除这些具有null
或undefined
值的字段,我想将它们保留在对象中,但将它们的值更改为空字符串''
谢谢
我有一个对象,其中一些字段的值为null
或undefined
。是否有一种快捷简便的方法,可以使用Javascript或Lodash将这些值更改为空字符串''
?
例如输入:
{
a: '23',
b: 'Red',
c: null,
}
示例输出:
{
a: '23',
b: 'Red',
c: '',
}
注意:我不想删除这些具有null
或undefined
值的字段,我想将它们保留在对象中,但将它们的值更改为空字符串''
谢谢
Object.keys()
和 .forEach()
的组合:Object.keys(yourObject).forEach(function(key, index) {
if (this[key] == null) this[key] = "";
}, yourObject);
==
比较运算符会同时检查null
和undefined
。将yourObject
作为第二个参数传递给.forEach()
将导致回调函数内的this
绑定到它上面。
编辑 —— 最初我将其编写为一个=>
函数,但这样做是行不通的,因为我们需要this
以传统方式工作。_.mapValues()
来迭代值并替换它们,使用_.isNil()
来检查一个值是否为null
或undefined
。"最初的回答"
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>
=>
函数,所以我并不习惯思考它们的工作原理等。 - Pointyfield
,而不是(key, index)
这两个参数吗?然后代码变成if (field == null) field = "";
? - tnoel999888index
参数,因此可以省略它,因为该函数不使用它。 - Pointy