gpt4 book ai didi

javascript - jQuery.filter() : exit before the end

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:59:11 24 4
gpt4 key购买 nike

我有这个代码:

var image_match = $('#my_id image').filter(function(i, el) {
return el.attributes.x.value == x_image;
});

$('#my_id image') 给出了一个很长的数组(几千个)但幸运的是我知道有多少元素会通过测试(通常只有一个)所以我可以停止“循环” ' 一旦找到元素。问题是我不知道该怎么做(或者如果可能的话)。

这是为了提高效率,所以我正在寻找一个高效的解决方案。

也许是这样的,但是它有效率吗?

var target_number=3;//or whatever
var image_match = $('#my_id image').filter(function(i, el) {
var counter=0;
if (el.attributes.x.value == x_image) {
counter+=1;
};
if (counter==target_number) {
return el.attributes.x.value == x_image;
break;//return (false);//exit
}
return el.attributes.x.value == x_image;
});

最佳答案

您不能跳出 filter() 循环,因为它旨在将其逻辑应用于所有元素。

如果您想提前退出循环,我建议您更改逻辑以使用 each()。然后你可以return false;退出循环:

var target_number = 3, matches = [];

$('#my_id image').each(function(i, el) {
if (el.attributes.x.value == x) {
matches.push($(this));

if (matches.length == target_number)
return false;
}
});

matches 现在将大致等同于您的 image_match 变量的内容,只是它将是一个数组而不是 jQuery 对象。

或者,您可以使用 map() 直接构建一个仅包含所需值的数组:

let matches = $('#my_id image').map((i, el) => el.attributes.x.value === x ? $(el) : null).get();

关于javascript - jQuery.filter() : exit before the end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45330997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com