我有一个数组是:
[ 4ff023908ed2842c1265d9e4, 4ff0d75c8ed2842c1266099b ]
我必须找出以下内容是否在该数组内
4ff0d75c8ed2842c1266099b
这是我写的:
Array.prototype.contains = function(k) {
for(p in this)
if(this[p] === k)
return true;
return false;
}
显然,它不能正常工作,或者有时它可以更好地工作,但在我看来它是阻塞的。有没有人可以检查一下?
非常感谢
非阻塞搜索功能
Array.prototype.contains = function(k, callback) {
var self = this;
return (function check(i) {
if (i >= self.length) {
return callback(false);
}
if (self[i] === k) {
return callback(true);
}
return process.nextTick(check.bind(null, i+1));
}(0));
}
Usage:
[1, 2, 3, 4, 5].contains(3, function(found) {
if (found) {
console.log("Found");
} else {
console.log("Not found");
}
});
然而,为了搜索数组中的值,最好使用 Javascript 内置数组搜索函数,因为它会快得多(这样你可能不需要它是非阻塞的):
if ([1, 2, 3, 4, 5].indexOf(3) >= 0) {
console.log("Found");
} else {
console.log("Not found");
}
另外,请考虑underscore
使所有内容跨平台的库:http://underscorejs.org/ http://underscorejs.org/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)