jQuery在推送前插入var?

时间:2014-04-08 23:52:53

标签: jquery function return push

我有一个超越我的谜题,因为我认为我理解它是如何工作的但显然我不是。以下函数的columns.push($('#squad'+count).val());包含"Squad " +count,因此您获得了Squad 1 2 3 4 5 etc etc。 下一个推送包含名称Bob, Joe, John, Mark, etc etc

现在,以下产生:

Squad 1|Bob,Joe,John,Mark|Squad 2|Cletus,Ray ray,Billy Joe|Squad 3|Fred,Barney,Wilma

我希望它输出:

Squad 1,Bob,Joe,John,Mark|Squad 2,Cletus,Ray ray,Billy Joe|Squad 3,Fred,Barney,Wilma

我不能为我的生活弄清楚这一点。而且我知道这很简单,但几个小时的搜索让我在这里。任何帮助表示赞赏。

function getItems(exampleNr)
{
    var count = 0;
    var columns = [];
    $(exampleNr + ' ul.sortable-list').each(function(){
        columns.push($('#squad'+count).val());
        columns.push($(this).sortable('toArray').join(','));
        count++;
    });

    return columns.join('|');
}

2 个答案:

答案 0 :(得分:1)

您正在将 Squad#加入相同的columns数组。之前的代码产生了它所做的结果,因为columns

  • Squad 1
  • 鲍勃,乔,约翰,马克
  • Squad 2
  • Cletus,Ray ray,Billy Joe
  • Squad 3
  • 佛瑞德,巴尼,威尔玛

这就是他们用管道分隔的原因(|)。

要根据需要修复它,您需要 Squad#以及其他名称。您可以通过将columns.push行更改为这一行来实现此目的:

columns.push( [$('#squad'+count).val()].concat($(this).sortable('toArray')).join(',') );

使用 Squad#有效地创建一个数组,并在结束之前将已排序的数组连接起来将它们与,连接在一起。

答案 1 :(得分:0)

只需合并两个push并将两个数据放在一起。

function getItems(exampleNr)
{
    var count = 0;
    var columns = [];
    $(exampleNr + ' ul.sortable-list').each(function(){
        columns.push($('#squad'+count).val()+','+$(this).sortable('toArray').join(','));
        count++;
    });

    return columns.join('|');
}