【问题标题】:Loop through array ; find and display modulus遍历数组;查找并显示模数
【发布时间】:2013-12-31 03:05:53
【问题描述】:

我正在从一个 .json 文件中检索记录,该文件是我使用 node.js 生成的(使用 fs、ejs、http、request、connect 模块);

这是我用来检索记录的代码:

<% layers.forEach(function(layer) { %>
<div class="dr-container" style="-webkit-transform: rotate(<%= layer.angle %>deg);">
<% for (j = 1; j <= layer.repeat; j++) { %>
<div class="dr-box" style="height: <%= 100 / layer.repeat %>%;background-image: url('data:image/svg+xml;charset=utf-8,<%= layer.linetype %><%= layer.swatch %>');"></div><% } %></div>
<% }); %>

(layers 是我从中提取信息的数组;angle、repeat、linetype、swatch 是模板上输入表单中的字段。里面的循环div 旨在将相同的结果重复一定次数并且效果很好)

如何检索除以 6 的所有记录的余数并仅显示这些记录?

就像拥有 38 条记录并显示最后 2 条记录。我知道我需要在触发它的第一行之前有一个循环?

【问题讨论】:

  • layers.slice(- (layers.length % 6)).forEach(…
  • @Bergi 谢谢。我粘贴了,一旦没有剩余,它似乎会显示所有记录。当有剩余时,它不会显示任何记录。然后我尝试添加 1,它显示了这个。我再试一次,它也有效。在第三次尝试时,它再次显示所有记录。有什么线索吗?

标签: javascript node.js ejs


【解决方案1】:

我一直在寻找可以给我同样的东西的东西,但不仅使用数组中的索引,还使用可以无限大的任意位置(即+100 - 100)所以我只是在上面的代码中添加了一行,在这种情况下为-12。如果有人需要的话。

function carousel(array, arbitraryIndex, n) {
var result = [];
index = arbitraryIndex % (array.length);
for (var i = index - n, len = array.length; i <= index + n; i++) {
    result.push(array[i < 0 ? len + i : i > len - 1 ? i - len : i]);
}

return result;
}

var array = [0, 1, 2, 3, 4, 5],
arbitraryIndex = -12,
n = 3;

console.log(carousel(array, arbitraryIndex, n));

【讨论】:

    【解决方案2】:

    @Bergi:很好,但是当模数为 0 时它不起作用: slice(-0) 是整个数组。要修复,请使用

    layers.slice(layers.length - layers.length%6).forEach(...
    

    【讨论】:

    • 谢谢,在您和@bergi 的帮助下,我意识到我还有另一个问题:(您可以在此处可视化项目:link 发生的情况是,每当我添加第 6 层时,它都会重置页面.这是正确的,但我希望能够显示第6层的结果。由于我需要提交表单才能到达这个空白页面(当模数为0时),我想知道这个页面是否可以'不显示最后 6 层?然后当添加下一层时(这个新的 6 组中的第一个,它将显示而不是空白页。
    • 认为 我明白你的意思,如果我这样做了,那么你需要在减号运算符右侧替换 layers.length%6 (layers.length%6 || 6) 的括号,包括括号。表达式变为:layers.slice(layers.length - (layers.length%6 || 6)).forEach(...
    • 是的,非常准确!
    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 2017-05-21
    • 2023-03-27
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 2017-03-22
    • 2016-01-28
    相关资源
    最近更新 更多