Я работаю с AngularJS. У меня есть JSON файл, из которого каждый объект должен отображаться в новом частичном. В файле JSON есть 100 объектов, мне нужно случайным образом выбрать три. Как мне это достичь?
контроллер:
myApp.controller('DetailsController', ['$scope', '$http','$routeParams' ,function($scope, $http, $routeParams) {
$http.get('js/JOSCO.json').success(function(data) {
$scope.questions = data; // Array of 100 objs
console.log($scope.questions);
$scope.whichItem = $routeParams.itemId; // I want to assign 3 random numbers to whichItem
if($routeParams.itemId > 0){
$scope.prevItem = Number($routeParams.itemId) - 1;
}
else{
$scope.prevItem = $scope.questions.length - 1;
}
if($routeParams.itemId < $scope.questions.length-1){
$scope.nextItem = Number($routeParams.itemId) + 1;
}
else{
$scope.nextItem = 0;
}
});
}]);
В настоящее время он принимает все 100 предметов...
Для доступа к случайному элементу в массиве вы можете использовать.
$scope.randomItem = data[Math.floor(Math.random() * data.length)];
Если вы повторите это три раза, вы получите три случайных элемента. Тем не менее вы можете создать функцию для создания кода DRY.
function getRandomItem(items) {
return items[Math.floor(Math.random() * items.length)];
}
Вышеупомянутое решение может получить один и тот же элемент несколько раз, если его вызывать три раза. Вы можете использовать splice(), чтобы удалить элемент из исходного массива.
function getRandomItem(items) {
var randomIndex = Math.floor(Math.random() * items.length);
var item = items.splice(randomIndex, 1);
return item[0];
}
$scope.whichItem
? Как массив из трех чисел, как строка, которая разделяет числа с запятыми?