1

因此,对于 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;
}

任何人都可以发现它为什么不起作用,因为我看不出它为什么不起作用..

谢谢,约翰

4

1 回答 1

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;
}
于 2013-03-13T23:03:57.893 回答