Javascript 检查map函数内的JSON响应中是否存在键
例如,我收到一个JSON响应:Javascript 检查map函数内的JSON响应中是否存在键,javascript,json,Javascript,Json,例如,我收到一个JSON响应: [ { 'key_1': 'value1A', 'key_2': 'value2A', 'key_3': 'value3A' }, { 'key_1': 'value1B', 'key_2': 'value2B', } ] 正如所观察到的,数组的第二个元素中没有提供键3。此处,数组中每个对象的键都相同 比方说,我只对使用响应的key_2和key_3感兴趣,因此我使用map,如下所示 this.serv.ge
[
{
'key_1': 'value1A',
'key_2': 'value2A',
'key_3': 'value3A'
},
{
'key_1': 'value1B',
'key_2': 'value2B',
}
]
正如所观察到的,数组的第二个元素中没有提供键3。此处,数组中每个对象的键都相同
比方说,我只对使用响应的key_2
和key_3
感兴趣,因此我使用map
,如下所示
this.serv.getInfo(code) // HTTP GET service
.subscribe(res => {
this.data = res.map(el => { // only use necessary key:value pairs
let _out = { // make an object to return
'new_key_1': el.key_2
'new_key_2': '' // if there is no key_3 then leave it empty
}
if ('key_3' in el) { // if this pair exists then add it..
_out['new_key_2'] = el.key_3
return _out;
}
return _out; // if not return with empty string
});
});
在这种情况下,JSON响应很小,因此效果很好。但是我假设如果JSON结构庞大而复杂,那么if(…in el)
检查可能会增加很多倍
在这种情况下,将响应映射到新对象时,哪个操作符最适合进行更动态的检查。甚至有必要在
map
函数中创建一个temp\u opt
对象吗?您可以使用el['key\u 3']|'
,它被称为
演示
let数据=[
{
“键1”:“值1a”,
“键2”:“值2a”,
“键3”:“值3a”
},
{
“键1”:“值1b”,
“键2”:“值2b”,
}
],
arr=数据映射((el)=>{
返回{'key_1':el['key_2'],'key_2':el['key_3']||'''};
});
控制台日志(arr)
您需要注意|
,因为它不会“检查”键是否存在,但它会检查收到的值是否有误。因此,如果null
或0
存储为值,则这些值将被忽略并替换为'
。因此,如果为key\u 3
返回的值是真实的,而不是密钥存在,则其计算结果为el['key\u 3']
。@t.niese祝您好运!如果必须涵盖这些情况,type of el['key_3']!=“未定义”?el['key_3']:''应使用code>而不是使用
中的运算符是真正检查键
是否存在的唯一测试。对于var obj={a:undefined}代码>'a'在obj
中是真的
,但是obj['a'的类型!=“未定义”
为false
。我并不是说|
是一个错误的解决方案。我只是说,你在答案开头的陈述是错误的,应该予以纠正。|
是否有效取决于用例。@t.niese谢谢,我同意你的说法,这是一个错误的陈述!修好了柱子