将数组转换回jQuery集

时间:2019-05-06 09:42:11

标签: javascript jquery

我需要将jQuery集转换为数组,以使用诸如#!/usr/bin/env ruby require 'rubygems' require 'xcodeproj' puts "Project path:" proj_path = gets puts "New target name:" name = gets puts "New target bundle identifer" bundleIdentifier = gets puts "Witch target to clone?" srcTargetName = gets name = name.chomp bundleIdentifier = bundleIdentifier.chomp proj_path = proj_path.chomp srcTargetName = srcTargetName.chomp proj = Xcodeproj::Project.open(proj_path) src_target = proj.targets.find { |item| item.to_s == srcTargetName } #proj_path = "/testingTest.xcodeproj" # create target target = proj.new_target(src_target.symbol_type, name, src_target.platform_name, src_target.deployment_target) target.product_name = name # create scheme scheme = Xcodeproj::XCScheme.new scheme.add_build_target(target) scheme.set_launch_target(target) scheme.save_as(proj_path, name, shared = true) # copy build_configurations target.build_configurations.map do |item| item.build_settings.update(src_target.build_settings(item.name)) end target.build_configurations.each do |config| config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundleIdentifier config.build_settings['PRODUCT_NAME'] = "$(TARGET_NAME)" end # copy build_phases phases = src_target.build_phases.reject { |x| x.instance_of? Xcodeproj::Project::Object::PBXShellScriptBuildPhase }.collect(&:class) phases.each do |klass| src = src_target.build_phases.find { |x| x.instance_of? klass } dst = target.build_phases.find { |x| x.instance_of? klass } unless dst dst ||= proj.new(klass) target.build_phases << dst end dst.files.map { |x| x.remove_from_project } src.files.each do |f| file_ref = proj.new(Xcodeproj::Project::Object::PBXFileReference) file_ref.name = f.file_ref.name file_ref.path = f.file_ref.path file_ref.source_tree = f.file_ref.source_tree file_ref.last_known_file_type = f.file_ref.last_known_file_type #file_ref.fileEncoding = f.file_ref.fileEncoding begin file_ref.move(f.file_ref.parent) rescue end build_file = proj.new(Xcodeproj::Project::Object::PBXBuildFile) build_file.file_ref = f.file_ref dst.files << build_file end end # add files #classes = proj.main_group.groups.find { |x| x.to_s == 'Group' }.groups.find { |x| x.name == 'Classes' } #sources = target.build_phases.find { |x| x.instance_of? Xcodeproj::Project::Object::PBXSourcesBuildPhase } #file_ref = classes.new_file('test.m') #build_file = proj.new(Xcodeproj::Project::Object::PBXBuildFile) #build_file.file_ref = file_ref #sources.files << build_file proj.save sort之类的数组方法:

map

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

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

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);

但是$(result).appendTo('#main'); 看起来不太像$(result),并且出现以下错误:

$('.selector)

1 个答案:

答案 0 :(得分:1)

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

  

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

因此,不要使用$(result).appendTo('#main');,而要使用:

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

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