如何随机播放或随机化JSON对象数组数据?

时间:2015-11-25 01:23:32

标签: javascript arrays angularjs ng-repeat javascript-objects

我正在开发一个测验应用。我一直试图弄清楚如何在测验问题中改变选项。

我已经研究过了,我发现最接近的是: shuffle array in ng-repeat angular

但是,我没有成功实现shuffleArray()函数。这对我不起作用。

我创建了一个jsfiddle http://jsfiddle.net/fa4v8/121/

这是我的重复:

<div ng-controller="MyCtrl">
    <p ng-repeat="(key,i) in options">{{options[key].text}}</p>
</div>

这是我的控制者:

var myApp = angular.module('myApp', []);

function MyCtrl($scope) {
    $scope.options = {
            "d": {
            "text": "Answer1-d"
        },
            "c": {
            "text": "Answer1-c"
        },
            "a": {
            "text": "Answer1-a"
        },
            "b": {
            "text": "Answer1-b"
        }
    }
}

输出按此顺序排列:(a,b,c,d)

答案-A

答案-b

答案-c

答案-d

有没有办法让订单中的选项显示为$ scope.options(d,c,a,b)或以随机顺序显示?

2 个答案:

答案 0 :(得分:0)

可以帮助您的工作示例:http://jsfiddle.net/owenmead/fa4v8/1/ 取自https://stackoverflow.com/a/21587316/3335993,只需在控制器中对它们进行排序,并在每次迭代中分配一个随机排名。

function MyCtrl($scope) {
    $scope.list = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
    $scope.random = function() {
        return 0.5 - Math.random();
    }
}

答案 1 :(得分:0)

实际上ng-repeat将按照定义的顺序返回对象的键 - 只要您使用Angular 1.4及更高版本。高达1.3版本的ngRepeat指令用于按字母顺序对键进行排序。 您提供的jsfiddle使用版本1.0 ...

查看此插件http://plnkr.co/edit/bStyZU 这个解释https://docs.angularjs.org/api/ng/directive/ngRepeat