AngularJS: получение трех случайных элементов из файла JSON

0

Я работаю с 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 предметов...

  • 0
    Как вы хотите назначить 3 случайных числа для $scope.whichItem ? Как массив из трех чисел, как строка, которая разделяет числа с запятыми?
  • 0
    Можете ли вы предоставить образец JSON с несколькими объектами?

2 ответа

0
Лучший ответ

Для доступа к случайному элементу в массиве вы можете использовать.

$scope.randomItem = data[Math.floor(Math.random() * data.length)];

Если вы повторите это три раза, вы получите три случайных элемента. Тем не менее вы можете создать функцию для создания кода DRY.

function getRandomItem(items) {

  return items[Math.floor(Math.random() * items.length)];
}
0

Вышеупомянутое решение может получить один и тот же элемент несколько раз, если его вызывать три раза. Вы можете использовать splice(), чтобы удалить элемент из исходного массива.

function getRandomItem(items) {
    var randomIndex = Math.floor(Math.random() * items.length);
    var item = items.splice(randomIndex, 1);
    return item[0];
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню