如何将对象的JavaScript数组转换为jQuery prependTo

如何将对象的JavaScript数组转换为jQuery prependTo,javascript,jquery,Javascript,Jquery,在下面的示例中,我将设置一个对象数组,并按关键参数(位置)对它们进行排序。然后我需要输出结果——但是如何输出呢?请参阅代码中的注释 $(document).ready(function () { function sortHooks(){ // add modules var modules = [ { module: 'navbar', hook: 'hook-header', position: '2'},

在下面的示例中,我将设置一个对象数组,并按关键参数(位置)对它们进行排序。然后我需要输出结果——但是如何输出呢?请参阅代码中的注释

$(document).ready(function () {

    function sortHooks(){

        // add modules
        var modules = [ 
            { module: 'navbar', hook: 'hook-header', position: '2'},
            { module: 'logo', hook: 'hook-header', position: '3'},
            { module: 'description', hook: 'hook-header', position: '1'}
        ];

        // sort by "position" ASC
        function byPosition(a,b) {
            if (a.position < b.position)
                return -1;
            if (a.position > b.position)
                return 1;
            return 0;
        }

        // jQuery function with the given parameters
        /*  for each modules as modules
            for each hook as hook
            do the following:
            $( '#' + module )prependTo( '#' + hook )

            so for the given example it should return
            $('#description')prependTo('hook-header')
            $('#navbar')prependTo('hook-header')
            $('#logo')prependTo('hook-header')

            so they can be executed in that specific order.
            And since we're using "prepend" that will mean
            that the items be placed like this:
            #logo
            #navbar
            #description
        */

        return ???
    }

    // Execute sortHooks function
    sortHooks();
});

我也尝试过很多其他的方法,其中一种是,效果很好,但是如果位置比父母里面的孩子高,它就不知道该怎么办,导致了很多不想要的行为。

只需要使用一个常规的循环

function byPosition(a,b) { return a.position-b.position; }
modules.sort(byPosition);
modules.forEach(function(obj){
    $('#'+obj.madule).prependTo('#'+obj.hook);
});
for(var i=0; i<modules.length; i++){
   $( '#' + modules[i].module )prependTo( '#' + modules[i].hook );
}

for(vari=0;iOff主题:您可以使用
函数byPosition(a,b){返回a.position-b.position;}
@Oriol谢谢!请注意,除非他们使用填隙片/填充胶,
forEach
在IEI上不可用。我不是在关注IE@Съъъъъъъъъаъааааааааааа1072输出,您只是在将一个元素前置到另一个元素,它不起作用,所以我假设我必须从“for”循环输出结果,并将其发送到函数“return”。现在您说我重复检查了所有其他元素,只是为了发现我的元素ID不同……我更改了它们,一切正常!谢谢!
for(var i=0; i<modules.length; i++){
   $( '#' + modules[i].module )prependTo( '#' + modules[i].hook );
}