我遍历整个汽车阵列,并查看计数没有“滤除”类的对象的数量。是否可以简化此语法?我知道在jQuery中,您可以对元素执行以下操作:

        $("element").hasClass("filtered-out").length;


我的代码:

        var available_cars = 0;
        cars.forEach(function(element) {
            if (!element.hasClass("filtered-out"))
                available_cars++;
        });

最佳答案

您可以使用filter

var available_cars = cars.filter(function(car) { return !car.hasClass("filtered-out"); }).length;


ES2015 +箭头功能更加简洁:

var available_cars = cars.filter(car => !car.hasClass("filtered-out")).length;


如果您可以使cars成为jQuery对象而不是数组(您似乎在问题中将其用作数组),则可能是:

var available_cars = cars.filter(":not(.filtered-out)").length;




该问题将cars视为数组(cars.forEach),但将单个元素视为jQuery对象(element.hasClass),所以这就是我在上面的第一段代码中所做的。不过,这很奇怪。

关于javascript - JavaScript forEach语法和长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50006305/

10-12 03:03