javascrip如何实现php中的in_array函数(判断是否在数组中)
|
在JavaScript中有没有办法比较一个数组的值,看看它是否在另一个数组中? 类似于PHP的in_array功能? 不,它没有。出于这个原因,大多数流行的库都带有一个实用程序包。查看jQuery的inArray和Prototype的Array.indexOf作为示例。 jQuery的实现就像你期望的那样简单: function inArray(needle,haystack) { var length = haystack.length; for(var i = 0; i < length; i++) { if(haystack[i] == needle) return true; } return false; } 如果你正在处理大量的数组元素,那么上面的方法就可以很好地完成。 以上方法对判断字符串是否在数组中是有效的。但根据PHP文档,这是PHP in_array函数的预期功能: $a = array(array('p','h'),array('p','r'),'o'); if (in_array(array('p',$a)) { echo "'ph' was foundn"; } if (in_array(array('f','i'),$a)) { echo "'fi' was foundn"; } if (in_array('o',$a)) { echo "'o' was foundn"; } // Output: // 'ph' was found // 'o' was found 在js中如何实现判断一个数组是否存在于里一个数组呢?代码如下: function arrayCompare(a1,a2) { if (a1.length != a2.length) return false; var length = a2.length; for (var i = 0; i < length; i++) { if (a1[i] !== a2[i]) return false; } return true; } function inArray(needle,haystack) { var length = haystack.length; for(var i = 0; i < length; i++) { if(typeof haystack[i] == 'object') { if(arrayCompare(haystack[i],needle)) return true; } else { if(haystack[i] == needle) return true; } } return false; } 这是我对上面的测试: var a = [['p','h'],['p','r'],'o']; if(inArray(['p',a)) { alert('ph was found'); } if(inArray(['f','i'],a)) { alert('fi was found'); } if(inArray('o',a)) { alert('o was found'); } // Results: // alerts 'ph' was found // alerts 'o' was found 请注意,我故意没有扩展Array原型,因为这通常是一个坏主意。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
