一尘不染

使用AngularJS,我如何随机化集合的顺序?

angularjs

您如何以随机顺序订购AngularJS中的项目列表?我当时以为内置orderBy过滤器会起作用,但是我不确定在不向模型中添加一些其他数据的情况下如何工作。这样的东西会很棒。

item in items | orderBy:random

我的下一个想法是创建一个自定义过滤器,但如果已有更好的选择,我宁愿避免这种情况。


阅读 186

收藏
2020-07-04

共1个答案

一尘不染

编辑警告! :这些结果是歪斜的,请勿使用此结果。该答案仅作为警告,直到进一步编辑为止。

说明 :任何项目位于第一位置的机会均应相等,但是经过10,000次迭代(例如6个项目)后的实际百分比机率最终为

1:〜28%,2:〜10%,3:〜14%,4:〜20%,5:〜12%,6:〜15%

https://jsfiddle.net/sh0ber/km9cqvpf/

orderBy可以接受一个函数参数,就像array.sort这样,您可以使用上面的HTML并random在范围内定义一个函数,例如:

$scope.random = function(){
    return 0.5 - Math.random();
};

这将返回一个随机值,有时为负,有时为正,有时为0,该值将对数组进行随机排序。

2020-07-04