gpt4 book ai didi

javascript - 像 LINQ 一样返回选定元素属性的自定义 jQuery 选择器

转载 作者:行者123 更新时间:2023-11-29 09:58:38 24 4
gpt4 key购买 nike

问题

我需要查询作为对象数组返回的每个项目的一些属性

我们现在在做什么

$('selector').each(create array of texts or whatsoever);

怎么了?

Why should we iterate over elements for each requirement?

在 LINQ 中也是一样

IQueryable<Book>;
books.Select(b=> b.Text).ToArray();
// or another sample
books.Select(b=> new { b.Text , b.ISBN}).ToArray();

我们/我需要什么?

选择指定的元素属性作为对象数组而不重复元素 - 这称为延迟枚举

这可能吗?

我想是的,因为现在我有一些想法。

我已经知道“map”和“each”方法,请注意它们都会重复选择器项。所以是的,map 会产生我想要的结果,但不完全是。
另请注意,即使是性能比 java 脚本更好的 C# 也在使用我要求的这种方法,
所以这是所有网络开发人员的要求,而不仅仅是我,这正是我在这里分享要解决的问题的原因。

研究结果

使用 jQuery 对元素进行迭代是不可避免的,因为 jQuery 本身不会使用循环遍历文档元素来查找元素,直到有必要这样做(例如伪类),因此为了在 jQuery 基础结构上实现延迟枚举,我们必须强制 jQuery 对项目进行迭代,并且让它变慢。

我使用名为“select”的伪类并像 lambda 表达式一样传入 .net 来实现延迟枚举。这就像 .net 一样处理选择非常好,但结果比 map 慢,每个 jQuery 方法最多 50 %.最后的答案是 jQuery map 方法。

最佳答案

您可能正在寻找 map()方法:

var books_text = $(".book").map(function() {
return $(this).text();
}).get();

var books_info = $(".book").map(function() {
var $this = $(this);
return {
text: $this.text(),
isbn: $this.attr("isbn") // If stored in an attribute.
};
}).get();

关于javascript - 像 LINQ 一样返回选定元素属性的自定义 jQuery 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486852/

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