gpt4 book ai didi

javascript - 让Javascript做列表理解

转载 作者:IT老高 更新时间:2023-10-28 20:23:20 25 4
gpt4 key购买 nike

让 Javascript 执行 Python 的列表理解的最简洁的方法是什么?

在 Python 中,如果我有一个我想“拉出”名称的对象列表,我会这样做...

list_of_names = [x.name for x in list_of_objects]

在 javascript 中,除了使用 for 循环构造之外,我真的没有看到更“漂亮”的方法。

仅供引用:我正在使用 jQuery;也许它有一些漂亮的功能使这成为可能?

更具体地说,假设我使用像 $('input') 这样的 jQuery 选择器来获取所有 input 元素,我将如何最干净地 为每个 input 元素创建一个包含所有 name 属性的数组——即所有 $('input').attr('name ') 数组中的字符串?

最佳答案

使用 Array.map 的一般情况, 需要 javascript 1.6(也就是说,可以在除 IE < 9 之外的所有浏览器上运行) 使用像 MooTools 这样的对象增强框架可以在每个浏览器上运行:

var list_of_names = document.getElementsByTagName('input').map(
function(element) { return element.getAttribute('name'); }
);

如果处理不提供 map 的可迭代对象(例如 generators ),spread syntax可以用来先创建一个数组:

[...Array(10).keys()].map(x => x * 2 + 3)

扩展语法也适用于数组,因此如果您需要将 map 应用于任何可迭代对象,首先将其扩展为列表是最安全的。

(请注意,此示例还使用了 arrow function ,这需要 ES6 支持。大多数浏览器版本都支持或不支持。IE 都不支持,如果它本身需要支持,尽管 IE 已经被 Edge 取代了一段时间。)

jQuery 特定示例,适用于所有浏览器:

var list_of_names = jQuery.map(jQuery('input'), function(element) { return jQuery(element).attr('name'); });

使用 .each 的其他答案是错误的;不是代码本身,而是实现是次优的。

编辑:还有Array comprehensions在 Javascript 1.7 中引入,但这完全依赖于语法,不能在原生缺乏它的浏览器上模拟。这是您可以在 Javascript 中获得的最接近您发布的 Python 代码段的内容。然而,got removed from the language

关于javascript - 让Javascript做列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964456/

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