我有以下代码:
const result = A.field_1.subfield_2
当null
为null(或A
)时如何评估结果为A.field_1
并避免出现null错误?我想知道是否有比这更优雅的方法
if (A != null && A.field_1 != null) { ...
例如,如果有10个字段,该怎么办。
答案 0 :(得分:1)
if(A && A.field_1 && A.field_1.subfield_2) {
// Your code here
// Remember: null and undefined always return false
}
答案 1 :(得分:0)
创建自定义方法以检查Object。使用对象constructor,我们可以检查天气变量是否为对象。
function isObject(obj) {
return (!!obj) && obj.constructor === Object
}
const result = isObject(A) && isObject(A.field_1) ? A.field_1.subfield_2 : null
答案 2 :(得分:0)
将其包装在try / catch中,也可以使用10次或以上:)
"10" > "2"
答案 3 :(得分:0)
您可以通过遍历所有Object.values()
并使用every()
测试它们是否有效来使其成为递归函数。
以下函数处理对象和数组:
function test(obj) {
if (typeof obj == 'undefined' || obj == null) return false
if (typeof obj == 'object') {
return Object.values(obj).every(i => test(i))
}
return true
}
console.log(test({field_1: 0, field_2: 'abc'}))
console.log(test({field_1: 1, field_2: null}))
console.log(test({field_1: 1, field_2: null, cat: 123}))
console.log(test({field_1: 1, field_2: /abc/g, monkey: { dog: 'cat' }}))
console.log(test({field_1: 1, field_2: /abc/g, monkey: { dog: 'cat', mouse: { pig: null } }}))
console.log(test({field_1: 1, field_2: /abc/g, monkey: { dog: 'cat', mouse: { pig: [{cat: 'af'}]}}}))
console.log(test({field_1: 1, field_2: /abc/g, monkey: { dog: 'cat', mouse: { pig: [{cat: 'af'}, {cat: null}]}}}))