jQuery:我如何创建一个数组对象,其中的变量设置对象键的数量和键值本身?

jQuery:我如何创建一个数组对象,其中的变量设置对象键的数量和键值本身?,jquery,arrays,object,map,Jquery,Arrays,Object,Map,我正试着去想这件事,希望你能帮我 我的目标是创建一个数组的对象,其中每个键由一个变量设置,该键的值是另一个数组的过滤结果 好吧,写起来很复杂,下面是一个例子: <!-- Markup --> <section id="container"> <article class="class-1">1</article> <article class="class-2">2</article> <art

我正试着去想这件事,希望你能帮我

我的目标是创建一个
数组的
对象
,其中每个
由一个
变量
设置,该
键的
是另一个
数组
的过滤结果

好吧,写起来很复杂,下面是一个例子:

<!-- Markup -->
<section id="container">
    <article class="class-1">1</article>
    <article class="class-2">2</article>
    <article class="class-3">3</article>
    <article class="class-4">4</article>
    <article class="class-5">5</article>
    <article class="class-6">6</article>
    <article class="class-7">7</article>
    <article class="class-8">8</article>
    <article class="class-9">9</article>
</section>

//  Desired outcome:
//  plugin variables are
    { columns:3 }

var cols = {
    1 : [ $('.class-1') , $('.class-4') , $('.class-7') ],
    2 : [ $('.class-2') , $('.class-5') , $('.class-8') ],
    3 : [ $('.class-3') , $('.class-6') , $('.class-9') ]
};

// my jQuery so far:
// note : columns == 3

var cols =  $.map( $('article','#container') , function(item, i) {
                return {[ i%columns+1 : item ]};
            });

1.
2.
3.
4.
5.
6.
7.
8.
9
//预期结果:
//插件变量是
{列:3}
var cols={
1:[$('.class-1'),$('.class-4'),$('.class-7')],
2:[$('.class-2'),$('.class-5'),$('.class-8')],
3:[$('.class-3'),$('.class-6'),$('.class-9')]
};
//到目前为止,我的jQuery:
//注:列==3
var cols=$.map($('article','#container'),函数(item,i){
返回{[i%列+1:item]};
});
我怎样才能在这里实现我所需要的? 我做错了什么

任何帮助都将不胜感激

谢谢你的阅读

詹尼斯如何:

或者,对于更动态的方法:

cols = {};    
for(var i = 1; i <= info.columns; i++)
    cols[i] = articles
        .filter(':nth-child(' + info.columns + 'n + ' + i + ')')
        .map(mapFunc).get()
cols={};

对于(var i=1;i我想我明白了您的意图。您希望文章在加载时自动排序到列映射中,对吗

我不认为
.map
会让你达到目的,因为它会返回一个数组。在你想要的输出中,你有一个对象,每个列都有键。我认为你想要的是以下内容:

var columns = 3;
var cols = {};

$(document).ready(function(){
    $('article','#container').each(function(index, value){
        var col = index%columns + 1;
        if(cols[col] === undefined){
            cols[col] = [$(value)];
        } else {
            cols[col].push($(value));
        }
    });
});

这正是我想要创建的,非常感谢!感谢您的解决方案,在这种情况下,我更喜欢RSG的解决方案,但无论如何,这(特别是第二个解决方案)非常好,我会记住它以备将来使用。再次感谢。
var columns = 3;
var cols = {};

$(document).ready(function(){
    $('article','#container').each(function(index, value){
        var col = index%columns + 1;
        if(cols[col] === undefined){
            cols[col] = [$(value)];
        } else {
            cols[col].push($(value));
        }
    });
});