假设我有一个这样的数组:
由于 PHP 中没有
我会得到错误:
您需要逐层检查数组的存在。我不知道它是否实际上有效,但即使有效,这看起来是一种不好且愚蠢的方式来检查某些东西。我的意思是看看在PHP中它是多么简单,而在JavaScript中我必须检查数组内每个数组的存在。所以,有没有更好的方法来检查数组的值呢?
$game = Array
(
['round'] => Array
(
['match'] => Array
(
['player_2'] => Array
(
[name] => asddd
[id] => 1846845
[winner] => yes
)
['player_21'] => Array
(
[name] => ddd
[id] => 1848280
[winner] => no
)
)
)
)
假设在Node.js/Javascript中,我需要检查player_3
的winner
键值是否为yes
。在PHP中,您可能会这样做:
if( $game['round']['match'][player_3]['winner'] == 'yes'){
}
由于 PHP 中没有
player_3
,所以会返回 false。但如果我在 JavaScript 中进行类似的操作: if( typeof game['round']['match'][player_3]['winner'] != 'undefined' && game['round']['match'][player_3]['winner'] == 'yes'){
}
我会得到错误:
(node:15048) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '0' of undefined
,原因是player_3
在数组中不存在,你不能检查一个不存在的数组的键值。
在Javascript中,你可以这样做:
if(
typeof game['round'] != 'undefined' &&
typeof game['round']['match'] != 'undefined' &&
typeof game['round']['match']['player_3'] != 'undefined' &&
typeof game['round']['match']['player_3']['winner'] != 'undefined' &&
typeof game['round']['match']['player_3']['winner'] == 'yes'
){
var playerIsWinner = true;
}else{
var playerIsWinner = false;
}
您需要逐层检查数组的存在。我不知道它是否实际上有效,但即使有效,这看起来是一种不好且愚蠢的方式来检查某些东西。我的意思是看看在PHP中它是多么简单,而在JavaScript中我必须检查数组内每个数组的存在。所以,有没有更好的方法来检查数组的值呢?
try...catch
块中。 - Luca Kiebel