使用带有 jQuery 元素的 ES5 .map
Using ES5 .map with jQuery Elements
下面的代码如何使用 ES5 .map
函数,而不是 jQuery .map?
const newList = new Array();
$(".something").each((_, opt2) => {
const val2 = $(opt2).val();
ddl2Vals.push(val2);
})
我尝试过但失败了:
const newList = $(".something").map(x => $(x).val());
编辑以包含 class:这是错字。
你可以在最后
中使用.get()
$("#something").map((_, x) => $(x).val()).get()
我将假设您的真实代码使用 returns 多个元素的选择器(#something
是一个 ID 选择器;ID 是应该在文档中是唯一的)。
作为, you can use get
at the end to get a true array from the jQuery object, although you need to remember the difference between jQuery's map
and Array's map
(对于jQuery,回调的第一个参数是索引,而不是元素)。
如果你真的想使用 Array
的 map
,你可以使用 Function.prototype.call
,像这样:
const newList = Array.prototype.map.call($("some-selector"), opt2 => $(opt2).val());
但是ES2015新增了Array.from
,可以做映射;请参阅 (最后一个代码片段)。
旁注:如果 opt2
是 input
、select
或 option
元素,则无需使用 jQuery 来获取其值:
const newList = Array.prototype.map.call($("some-selector"), opt2 => opt2.value);
或者,再次使用 Array.from
,正如 Bergi 指出的那样:
const newList = Array.from($("some-selector"), opt2 => opt2.value);
要使用 Array
的 map
方法,首先使用 .toArray
:
将 jQuery 集合转换为数组
const newList = $(".something").toArray().map(x => x.value);
或者,您可以使用 ES6 Array.from
:
const newList = Array.from($(".something")).map(x => x.value);
你甚至不需要使用.map()
的地方,你可以只使用它的第二个参数一步完成映射和数组转换:
const newList = Array.from($(".something"), x => x.value);
下面的代码如何使用 ES5 .map
函数,而不是 jQuery .map?
const newList = new Array();
$(".something").each((_, opt2) => {
const val2 = $(opt2).val();
ddl2Vals.push(val2);
})
我尝试过但失败了:
const newList = $(".something").map(x => $(x).val());
编辑以包含 class:这是错字。
你可以在最后
中使用.get()
$("#something").map((_, x) => $(x).val()).get()
我将假设您的真实代码使用 returns 多个元素的选择器(#something
是一个 ID 选择器;ID 是应该在文档中是唯一的)。
作为get
at the end to get a true array from the jQuery object, although you need to remember the difference between jQuery's map
and Array's map
(对于jQuery,回调的第一个参数是索引,而不是元素)。
如果你真的想使用 Array
的 map
,你可以使用 Function.prototype.call
,像这样:
const newList = Array.prototype.map.call($("some-selector"), opt2 => $(opt2).val());
但是ES2015新增了Array.from
,可以做映射;请参阅
旁注:如果 opt2
是 input
、select
或 option
元素,则无需使用 jQuery 来获取其值:
const newList = Array.prototype.map.call($("some-selector"), opt2 => opt2.value);
或者,再次使用 Array.from
,正如 Bergi 指出的那样:
const newList = Array.from($("some-selector"), opt2 => opt2.value);
要使用 Array
的 map
方法,首先使用 .toArray
:
const newList = $(".something").toArray().map(x => x.value);
或者,您可以使用 ES6 Array.from
:
const newList = Array.from($(".something")).map(x => x.value);
你甚至不需要使用.map()
的地方,你可以只使用它的第二个参数一步完成映射和数组转换:
const newList = Array.from($(".something"), x => x.value);