首页 > 解决方案 > 将数组转换回 jQuery 集

问题描述

我需要将 jQuery 集转换为数组以使用数组方法,例如sortmap

const result = $('.selector').toArray().map(function (el) {
    const o = $(el);
    return {object: o, value: o.data('value')};
}).sort(function (a, b) {
    if (a.value > b.value) return 1;
    if (a.value < b.value) return -1;
    return 0;
}).map(el => el.object);

如您所见,结果是一个 jQuery 对象数组。

现在我需要将其转换回 jQuery 集以便对其进行操作:

$(result).appendTo('#main');

$(result)看起来不太像$('.selector),我收到以下错误:

TypeError: e is undefined

标签: javascriptjquery

解决方案


而不是使用appendTo,我宁愿使用append它,正如您在文档中看到的那样,在其签名中,它也接受一个数组:http ://api.jquery.com/append/

htmlString 或 Element 或 Text 或 Array 或 jQuery DOM 元素、文本节点、元素数组和文本节点、HTML 字符串或 jQuery 对象,插入到匹配元素集中每个元素的末尾。

所以,而不是: $(result).appendTo('#main');,只需使用:

$('#main').append(result);

只要result是上述任何支持类型的数组。


推荐阅读