How to search in an array in Node.js in a non-blocking way?

前端 未结 1 1370
慢半拍i
慢半拍i 2021-02-04 07:12

I have an array which is:

[ 4ff023908ed2842c1265d9e4, 4ff0d75c8ed2842c1266099b ]

And I have to find if the following, is inside that array

1条回答
  •  别那么骄傲
    2021-02-04 07:20

    Non-blocking search function

    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");
        }
    });
    

    However, for searching the value in the array it is better to use Javascript built-in array search function, as it will be much faster (so that you probably won't need it to be non-blocking):

    if ([1, 2, 3, 4, 5].indexOf(3) >= 0) {
        console.log("Found");
    } else {
        console.log("Not found");
    }
    

    Also, consider the underscore library which makes all the stuff cross-platform: http://underscorejs.org/

    0 讨论(0)
提交回复
热议问题