【发布时间】:2021-10-25 18:45:08
【问题描述】:
我正在使用 Bootstrap5 和 VueJS 2 并尝试创建一个“pinterest 风格”的卡片布局,如下图所示:
上面的布局示例需要以下 HTML 标记: [Codesandbox available]
<main>
<div class="container-fluid">
<div class="row">
<div class="col-md-9">
<div class="row">
<div class="col-md-4">
<article>
</article>
<article>
</article>
</div>
<div class="col-md-4">
<article>
</article>
<article>
</article>
</div>
<div class="col-md-4">
<article>
</article>
<article>
</article>
</div>
</div>
<aside class="col-md-3 ml-auto">
...sidebar content...
</aside>
</div>
</div>
</main>
使用 JavaScript,如何获取数据数组并返回 3 个新数组,每个数组中除最后一个数组外的项目数量相等?这样我就可以正确地使用上面屏幕截图中所示的输出来构建布局?因此,例如,如果我有一个[1,2,3,4,5,6,7,8,9,10,11] 的源数据数组,我想返回类似[ [1,2,3,4], [5,6,7,8], [9,10,11] ]
我对此进行了初步尝试(在 VueJS 中),但我显然没有正确地做到这一点,因为虽然我的布局有点工作,但顺序是错误的,并且在一些卡片下方有间隙。恐怕我的 JavaScript 知识很一般。 我的尝试:https://codesandbox.io/s/vue-bootstrap-card-layout-0xjlt?file=/src/App.vue
【问题讨论】:
-
试过类似的方法,但是如何指定我只想返回 3 个子数组?
-
看看这个
_.chunk()in lodash,它正是你想要的lodash.com/docs/4.17.15#chunk -
您可以确定
chunk的大小除以array.length并计算结果上限:chunk = Math.ceil( array.length / 3); -
@AdilBimzagh:谢谢,你是对的。有什么理由使用 Lodash 库而不是下面发布的答案?
标签: javascript arrays vuejs2 bootstrap-5