考虑这个对象:
{
value1: 'bacon',
value2: '',
value3: 'lard',
value4: '',
value5: 'cheese',
};
有没有办法不经过迭代就得到下面的对象?
{
value1: 'bacon',
value2: null,
value3: 'lard',
value4: null,
value5: 'cheese',
};
考虑这个对象:
{
value1: 'bacon',
value2: '',
value3: 'lard',
value4: '',
value5: 'cheese',
};
有没有办法不经过迭代就得到下面的对象?
{
value1: 'bacon',
value2: null,
value3: 'lard',
value4: null,
value5: 'cheese',
};
3条答案
按热度按时间f0brbegy1#
没有迭代是不可能的,从外部函数的Angular 来看,对象只是一组任意的键值对。
也就是说,使用像lodash这样的库及其
mapValues
函数,只需一行代码就可以完成:或者,您可以在没有外部库的情况下自己完成(此示例会改变原始对象):
还有另一种方法,你可以使用
Proxy
对象来完成你的请求,这是一种懒惰的方式,它不会主动改变对象中的值,但是当一个值被请求时,它会检查它是否是空字符串,如果是,则返回null:这个代理解决方案可能很聪明,但是在大多数情况下,上面的迭代解决方案是更简单、更好的选择。
d7v8vwbk2#
另一个迭代示例。
r1wp621o3#
对于任何人谁遇到这个问题,这些解决方案并不完全像他们想要的那样工作,这里是我自己解决它的方法。我使用JSON.stringify + JSON.parse(data,reviver)来翻译字符串。