JavaScript推送到数组高级

时间:2018-12-09 15:20:28

标签: javascript arrays

我有简单的分页功能,可以输出数组。

exports.pagination = function(currentPage, nrOfPages) {
    var delta = 1,
        range = [],
        rangeWithDots = [],
        l;

    range.push(1);  

    if (nrOfPages <= 1){
    return range;
    }

    for (let i = currentPage - delta; i <= currentPage + delta; i++) {
        if (i < nrOfPages && i > 1) {
            range.push(i);
        }
    }  
    range.push(nrOfPages);

    for (let i of range) {
        if (l) {
            if (i - l == 2) {
                rangeWithDots.push(l + 1);
            } else if (i - l !== 1) {
                rangeWithDots.push('...');
            }
        }
        rangeWithDots.push(i);
        l = i;
    }

    return rangeWithDots;
}

车把:

{{#each pagination}}
            <li class="paginator-item">
                <a href="{{this}}" class="paginator-itemLink">{{this}}</a>
            </li>
{{/each}}

输出:

1 ... 7 8 9 ... 19

效果很好。但是我想做的是将“数字”和“ href”分开 这样我就可以使用

{{#each pagination}}
            <li class="paginator-item">
                <a href="{{this.href}}" class="paginator-itemLink">{{this.number}}</a>
            </li>
 {{/each}}

但是不知道我该怎么做却无法做到。找不到正确的方法。 rangeWithDots.push(number:'...',href:'')。尝试了很多事情,但找不到正确的方法

2 个答案:

答案 0 :(得分:2)

您可以将其推送为包含多个属性的对象。

因此,您可以通过访问对象和相应的属性来读取数组中的内容。

我希望这可以解决问题。

var rangeWithDots = []

rangeWithDots.push({href: "/sample", number: 5})

console.log(rangeWithDots)

//you can access the number by
console.log("number", rangeWithDots[0].number)

答案 1 :(得分:1)

您几乎是对的!您只需要包装参数即可使用{...}将其作为对象推送:

rangeWithDots.push({ number: ..., href: '...' });