将 SQL 查询返回的记录拆分为数组

Posted

技术标签:

【中文标题】将 SQL 查询返回的记录拆分为数组【英文标题】:Splitting SQL query returned records into an array 【发布时间】:2016-09-19 15:00:48 【问题描述】:

嘿,我想将返回的查询记录拆分为“分页”类型的东西,因此我想显示前 51 条记录,然后将其余记录添加到数组中,以便稍后在用户想要移动时获取到另一个页面。

我可以在页面上很好地显示前 51 个结果,但我无法找到将其余记录除以 51 的方法。

到目前为止我的代码:

var arrayhtml       = [];

for(var key in data)
    if(data.hasOwnProperty(key)) 
        if (totalX >= 51) 
            //Start putting the results into an array. 51 results per array
        else if (x > 1) 
            x = 0;
            _userName = data[key].fname + ' ' + data[key].lname;

            populateCards(_userName, 
                          data[key].email, 
                          data[key].img, 
                          data[key].school, 
                          data[key].userID, 
                          true,
                          data[key].encoded);
         else 
            _userName = data[key].fname + ' ' + data[key].lname;

            populateCards(_userName, 
                          data[key].email, 
                          data[key].img, 
                          data[key].school, 
                          data[key].userID, 
                          false, 
                          data[key].encoded);
            x++;
        

        totalRowCnt = data[key].totalRows;
        _tmpMath = Math.round(totalRowCnt / totalNum);
        total++;
        totalX++;

        console.log('totalX: ' + totalX)
    

在达到 51 之后,它进入 if (totalX >= 51) ,这就是我试图弄清楚如何将其余部分分成 51 个每个数组插槽的地方.

上面的代码一直在循环,直到它到达每个 3rd 记录,然后在其后放置一个 ,这样它就有一行 3 条记录,然后它就一直这样做,直到达到记录 51。所以 17 行,每行 3 条记录。 true 告诉函数将 strong> 最后,而 false 告诉函数不要放

任何帮助都会很棒!

【问题讨论】:

【参考方案1】:

javascript 代码如下:

将此函数添加到您的代码中:

// this is a simple pager function that return part of the array you want
//  so you can easily loop over it
// @param page you want
// @param how many values you want
// @return the sliced array with the parts you want
//     (this will return an empty array if your page is out of bound
//       e.g. when you array only contains less than 51 and you tell it you want page 2)
array_pager = function ( array, page, show ) 
   var start = (page -1) * show; // this sets the offset
   return array.slice( start, start + show);

你可以像这样使用这个函数:

// assuming the array's name is data
var this_page = array_pager( data, 1, 51); // get this_page 1, with 51 values

// then you can safely loop over it
for(var key in this_page) 
  _userName = this_page[key].fname + ' ' + this_page[key].lname;

  populateCards(_userName, 
                this_page[key].email, 
                this_page[key].img, 
                this_page[key].school, 
                this_page[key].userID, 
                false, 
                this_page[key].encoded);


// for page 2: array_pager( data, 2, 51) ... 
// 10 per page: array_pager( data, 1, 10) ... I think you get it now

【讨论】:

以上是关于将 SQL 查询返回的记录拆分为数组的主要内容,如果未能解决你的问题,请参考以下文章

sql 将逗号分隔的字符串拆分为值列表(返回游标)

将 SQL 查询结果转换为字符串数组

按句点将字符串拆分为字符串 [] 但返回一个空数组

将 SQL Server 中的字符串拆分为最大长度,并将每个字符串作为一行返回

如何在sql中插入记录时返回id(id为自动增长)

如何能实现将oracle的查询结果排序后,只返回第一条记录