以下代码如何使用ES5 .map
函数,而不是jQuery .map?
const newList = new Array();
$(".something").each((_, opt2) => {
const val2 = $(opt2).val();
ddl2Vals.push(val2);
})
I tried but failed:
const newList = $(".something").map(x => $(x).val());
编辑以包含class:它是typo。
我将假设您的实际代码使用一个选择器,返回多个元素(#something
是一个ID选择器;id在文档中应该是唯一的)。
正如prasanth所说,您可以在最后使用get
从jQuery对象中获得一个真正的数组,尽管您需要记住jQuery的map
和array的map
之间的区别(使用jQuery的,回调的第一个参数是索引,而不是元素)。
如果你真的想使用Array
的map
,你可以使用Function.prototype.call
,像这样:
const newList = Array.prototype.map.call($("some-selector"), opt2 => $(opt2).val());
ES2015增加了Array.from
,可以做映射;参见Bergi的回答(最后一个代码片段)。
旁注:如果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);
您可以在最后
使用.get()
$("#something").map((_, x) => $(x).val()).get()
要使用Array
的map
方法,首先使用.toArray
将jQuery集合转换为数组:
const newList = $(".something").toArray().map(x => x.value);
或者,您可以使用ES6Array.from
:
const newList = Array.from($(".something")).map(x => x.value);
,你甚至不需要使用.map()
,你可以使用它的第二个参数来完成映射和数组转换,只需一步:
const newList = Array.from($(".something"), x => x.value);