因此,对于PHP,我有一套方便的函数用于在多维数组上执行in_array:
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
然而,我试图在javascript中重新创建一个类似但我似乎无法让它工作..这就是我所拥有的:
function in_array_r(needle, haystack) {
var length = haystack.length;
for(var i = 0; i < length; i++) {
if(haystack[i] == needle){
return true;
}
if(typeof haystack[i]=='object'){
if(in_array_r(needle, haystack[i])){
return true;
}
}
}
return false;
}
任何人都可以发现它为什么不起作用,因为我无法理解为什么它不会......
谢谢, 约翰
答案 0 :(得分:1)
这可以..数字和非数字键.. doh!
function in_array_r(needle, haystack) {
var length = haystack.length;
for(var key in haystack) {
if(haystack[key] == needle){
return true;
}
if(typeof haystack[key]=='object'){
if(in_array_r(needle, haystack[key])){
return true;
}
}
}
return false;
}