我一直在使用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 :(得分:0)
要访问阵列中的随机项,您可以使用。
data2 <- structure(list(index = c(1, 10, 100, 1000, 10000, 100001, 100002,
100003, 100004, 100005, 100006, 100007, 100008, 100009, 10001,
100010, 100011, 100012, 100013, 100014, 100015, 100016, 100017,
100018, 100019, 10002, 100020, 100021, 100022, 100023, 100024,
100025, 100026, 100027, 100028, 100029, 10003, 100030, 100031,
100032, 100033, 100034, 100035, 100036, 100037, 100038, 100039,
10004, 100040, 100041, 100042, 100043, 100044, 100045, 100046,
100047, 100048, 100049, 10005, 100050, 100051, 100052, 100053,
100054, 100055, 100056, 100057, 100058, 100059, 10006, 100060,
100061, 100062, 100063, 100064, 100065, 100066, 100067, 100068,
100069, 10007, 100070, 100071, 100072, 100073, 100074, 100075,
100076, 100077, 100078, 100079, 10008, 100080, 100081, 100082,
100083, 100084, 100085, 100086, 100087, 100088, 100089, 10009,
100090, 100091, 100092, 100093, 100094, 100095, 100096, 100097,
100098, 100099, 1001, 10010, 100100, 100101, 100102, 100103,
100104, 100105, 100106, 100107, 100108, 100109, 10011, 100110,
100111, 100112, 100113, 100114, 100115, 100116, 100117, 100118,
100119, 10012, 100120, 100121, 100122, 100123, 100124, 100125,
100126, 100127, 100128, 100129, 10013, 100130, 100131, 100132,
100133, 100134, 100135, 100136, 100137, 100138, 100139, 10014,
100140, 100141, 100142, 100143, 100144, 100145, 100146, 100147,
100148, 100149, 10015, 100150, 100151, 100152, 100153, 100154,
100155, 100156, 100157, 100158, 100159, 10016, 100160, 100161,
100162, 100163, 100164, 100165, 100166, 100167, 100168, 100169,
10017, 100170, 100171, 100172, 100173, 100174, 100175, 100176,
100177, 100178, 100179, 10018, 100180, 100181, 100182, 100183,
100184, 100185, 100186, 100187, 100188, 100189, 10019, 100190,
100191, 100192, 100193, 100194, 100195, 100196, 100197, 100198,
100199, 1002, 10020, 100200, 100201, 100202, 100203, 100204,
100205, 100206, 100207, 100208, 100209, 10021, 100210, 100211,
100212, 100213, 100214, 100215, 100216, 100217, 100218, 100219,
10022, 100220, 100221, 100222, 100223, 100224, 100225, 100226,
100227, 100228, 100229, 10023, 100230, 100231, 100232, 100233,
100234, 100235, 100236, 100237, 100238, 100239, 10024, 100240,
100241, 100242, 100243, 100244, 100245, 100246, 100247, 100248,
100249, 10025, 100250, 100251, 100252, 100253, 100254, 100255,
100256, 100257, 100258, 100259, 10026, 100260, 100261, 100262,
100263, 100264, 100265, 100266, 100267, 100268, 100269, 10027,
100270, 100271, 100272, 100273, 100274, 100275, 100276, 100277,
100278, 100279, 10028, 100280, 100281, 100282, 100283, 100284,
100285, 100286, 100287, 100288, 100289, 10029, 100290, 100291,
100292, 100293, 100294, 100295, 100296, 100297, 100298, 100299,
1003, 10030, 100300, 100301, 100302, 100303, 100304, 100305,
100306, 100307, 100308, 100309, 10031, 100310, 100311, 100312,
100313, 100314, 100315, 100316, 100317, 100318, 100319, 10032,
100320, 100321, 100322, 100323, 100324, 100325, 100326, 100327,
100328, 100329, 10033, 100330, 100331, 100332, 100333, 100334,
100335, 100336, 100337, 100338, 100339, 10034, 100340, 100341,
100342, 100343, 100344, 100345, 100346, 100347, 100348, 100349,
10035, 100350, 100351, 100352, 100353, 100354, 100355, 100356,
100357, 100358, 100359, 10036, 100360, 100361, 100362, 100363,
100364, 100365, 100366, 100367, 100368, 100369, 10037, 100370,
100371, 100372, 100373, 100374, 100375, 100376, 100377, 100378,
100379, 10038, 100380, 100381, 100382, 100383, 100384, 100385,
100386, 100387, 100388, 100389, 10039, 100390, 100391, 100392,
100393, 100394, 100395, 100396, 100397, 100398, 100399, 1004,
10040, 100400, 100401, 100402, 100403, 100404, 100405, 100406,
100407, 100408, 100409, 10041, 100410, 100411, 100412, 100413,
100414, 100415, 100416, 100417, 100418, 100419, 10042, 100420,
100421, 100422, 100423, 100424, 100425, 100426, 100427, 100428,
100429, 10043, 100430, 100431, 100432, 100433, 100434, 100435,
100436, 100437, 100438, 100439, 10044, 100440, 100441, 100442,
100443, 100444, 100445, 100446, 100447), X = c(0.24, 0.25,
0.27, 0.32, 0.24, 0.22, 0.23, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21,
0.21, 0.23, 0.2, 0.21, 0.21, 0.21, 0.22, 0.22, 0.21, 0.22, 0.21,
0.21, 0.21, 0.21, 0.22, 0.22, 0.22, 0.23, 0.22, 0.22, 0.22, 0.21,
0.22, 0.23, 0.22, 0.22, 0.22, 0.21, 0.22, 0.22, 0.22, 0.22, 0.22,
0.22, 0.22, 0.23, 0.23, 0.23, 0.23, 0.21, 0.21, 0.21, 0.21, 0.2,
0.22, 0.23, 0.21, 0.22, 0.2, 0.21, 0.21, 0.2, 0.2, 0.21, 0.21,
0.22, 0.23, 0.21, 0.21, 0.22, 0.21, 0.2, 0.21, 0.21, 0.23, 0.21,
0.21, 0.22, 0.21, 0.21, 0.21, 0.21, 0.21, 0.22, 0.22, 0.22, 0.22,
0.21, 0.21, 0.22, 0.21, 0.21, 0.22, 0.21, 0.21, 0.22, 0.21, 0.21,
0.22, 0.23, 0.21, 0.21, 0.21, 0.22, 0.22, 0.21, 0.22, 0.24, 0.24,
0.24, 0.26, 0.22, 0.24, 0.25, 0.21, 0.23, 0.22, 0.24, 0.24, 0.26,
0.25, 0.24, 0.23, 0.28, 0.27, 0.28, 0.26, 0.27, 0.26, 0.25, 0.25,
0.22, 0.25, 0.22, 0.27, 0.27, 0.26, 0.28, 0.28, 0.28, 0.28, 0.27,
0.26, 0.27, 0.23, 0.27, 0.27, 0.27, 0.27, 0.26, 0.27, 0.28, 0.26,
0.26, 0.25, 0.22, 0.24, 0.26, 0.26, 0.24, 0.24, 0.25, 0.25, 0.24,
0.25, 0.25, 0.22, 0.26, 0.25, 0.25, 0.25, 0.25, 0.26, 0.28, 0.26,
0.27, 0.24, 0.24, 0.26, 0.26, 0.25, 0.25, 0.25, 0.25, 0.23, 0.24,
0.24, 0.24, 0.22, 0.24, 0.25, 0.16, 0.18, 0.17, 0.17, 0.17, 0.14,
0.15, 0.16, 0.23, 0.16, 0.16, 0.16, 0.13, 0.14, 0.15, 0.17, 0.17,
0.17, 0.17, 0.22, 0.17, 0.17, 0.19, 0.19, 0.18, 0.18, 0.18, 0.2,
0.18, 0.19, 0.21, 0.23, 0.17, 0.19, 0.18, 0.18, 0.19, 0.18, 0.18,
0.18, 0.2, 0.18, 0.23, 0.16, 0.17, 0.18, 0.19, 0.18, 0.2, 0.21,
0.21, 0.21, 0.2, 0.23, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21,
0.2, 0.2, 0.22, 0.23, 0.22, 0.22, 0.22, 0.21, 0.22, 0.21, 0.23,
0.22, 0.21, 0.22, 0.24, 0.22, 0.23, 0.22, 0.2, 0.22, 0.21, 0.22,
0.22, 0.22, 0.23, 0.23, 0.24, 0.23, 0.24, 0.22, 0.22, 0.21, 0.22,
0.21, 0.2, 0.2, 0.22, 0.2, 0.22, 0.21, 0.22, 0.22, 0.21, 0.21,
0.23, 0.2, 0.22, 0.22, 0.22, 0.22, 0.21, 0.22, 0.22, 0.21, 0.2,
0.21, 0.21, 0.19, 0.21, 0.22, 0.21, 0.22, 0.22, 0.2, 0.2, 0.21,
0.2, 0.21, 0.21, 0.24, 0.2, 0.2, 0.2, 0.2, 0.2, 0.22, 0.22, 0.22,
0.21, 0.2, 0.17, 0.23, 0.22, 0.22, 0.21, 0.23, 0.23, 0.24, 0.24,
0.24, 0.23, 0.22, 0.24, 0.23, 0.23, 0.24, 0.23, 0.23, 0.23, 0.23,
0.22, 0.21, 0.24, 0.22, 0.22, 0.23, 0.22, 0.22, 0.21, 0.21, 0.23,
0.22, 0.22, 0.23, 0.24, 0.22, 0.23, 0.23, 0.23, 0.22, 0.23, 0.23,
0.24, 0.23, 0.23, 0.23, 0.23, 0.22, 0.22, 0.22, 0.22, 0.22, 0.23,
0.24, 0.23, 0.23, 0.22, 0.24, 0.22, 0.22, 0.22, 0.22, 0.22, 0.23,
0.27, 0.28, 0.27, 0.23, 0.27, 0.26, 0.26, 0.27, 0.26, 0.27, 0.26,
0.27, 0.28, 0.26, 0.23, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26,
0.26, 0.28, 0.29, 0.23, 0.26, 0.27, 0.28, 0.27, 0.27, 0.25, 0.26,
0.26, 0.26, 0.26, 0.22, 0.26, 0.26, 0.26, 0.26, 0.25, 0.26, 0.28,
0.26, 0.26, 0.26, 0.21, 0.22, 0.26, 0.27, 0.25, 0.26, 0.26, 0.26,
0.26, 0.26, 0.26, 0.26, 0.24, 0.26, 0.25, 0.26, 0.26, 0.26, 0.26,
0.26, 0.26, 0.27, 0.26, 0.23, 0.25, 0.24, 0.25, 0.3, 0.3, 0.29,
0.29, 0.28, 0.27, 0.28, 0.23, 0.28, 0.28, 0.27, 0.27, 0.27, 0.29,
0.28, 0.29, 0.26, 0.27, 0.24, 0.26, 0.26, 0.26, 0.29, 0.26, 0.26,
0.28, 0.28)), .Names = c("index", "X"), row.names = c(17L,
45L, 73L, 86L, 121L, 165L, 193L, 221L, 249L, 277L, 305L, 333L,
361L, 389L, 401L, 445L, 473L, 501L, 529L, 557L, 585L, 613L, 641L,
669L, 697L, 709L, 753L, 781L, 809L, 837L, 865L, 893L, 921L, 949L,
977L, 1005L, 1017L, 1061L, 1089L, 1117L, 1145L, 1173L, 1201L,
1229L, 1257L, 1285L, 1313L, 1325L, 1369L, 1397L, 1425L, 1453L,
1481L, 1509L, 1537L, 1565L, 1593L, 1621L, 1633L, 1677L, 1705L,
1733L, 1761L, 1789L, 1817L, 1845L, 1873L, 1901L, 1929L, 1941L,
1985L, 2013L, 2041L, 2069L, 2097L, 2125L, 2153L, 2181L, 2209L,
2237L, 2249L, 2293L, 2321L, 2349L, 2377L, 2405L, 2433L, 2461L,
2489L, 2517L, 2545L, 2557L, 2601L, 2629L, 2657L, 2685L, 2713L,
2741L, 2769L, 2797L, 2825L, 2853L, 2865L, 2909L, 2937L, 2965L,
2993L, 3021L, 3049L, 3077L, 3105L, 3133L, 3161L, 3166L, 3201L,
3245L, 3273L, 3302L, 3330L, 3358L, 3386L, 3414L, 3442L, 3470L,
3498L, 3509L, 3554L, 3582L, 3610L, 3638L, 3666L, 3694L, 3722L,
3750L, 3778L, 3806L, 3817L, 3862L, 3890L, 3918L, 3946L, 3974L,
4002L, 4030L, 4058L, 4086L, 4114L, 4125L, 4170L, 4198L, 4226L,
4254L, 4282L, 4310L, 4338L, 4366L, 4394L, 4422L, 4433L, 4478L,
4506L, 4534L, 4562L, 4590L, 4618L, 4646L, 4674L, 4702L, 4730L,
4741L, 4786L, 4814L, 4842L, 4870L, 4898L, 4926L, 4954L, 4982L,
5010L, 5038L, 5049L, 5094L, 5122L, 5150L, 5178L, 5206L, 5234L,
5262L, 5290L, 5318L, 5346L, 5357L, 5402L, 5430L, 5458L, 5486L,
5514L, 5542L, 5570L, 5598L, 5626L, 5654L, 5665L, 5710L, 5738L,
5766L, 5794L, 5822L, 5850L, 5878L, 5906L, 5934L, 5962L, 5973L,
6018L, 6046L, 6074L, 6102L, 6130L, 6158L, 6186L, 6214L, 6242L,
6270L, 6274L, 6309L, 6354L, 6382L, 6410L, 6438L, 6466L, 6494L,
6522L, 6550L, 6578L, 6606L, 6617L, 6662L, 6690L, 6718L, 6746L,
6774L, 6803L, 6831L, 6859L, 6887L, 6915L, 6925L, 6971L, 6999L,
7027L, 7055L, 7083L, 7111L, 7139L, 7167L, 7195L, 7223L, 7233L,
7279L, 7307L, 7335L, 7363L, 7391L, 7419L, 7447L, 7475L, 7503L,
7531L, 7541L, 7587L, 7615L, 7643L, 7671L, 7699L, 7727L, 7755L,
7783L, 7811L, 7839L, 7849L, 7895L, 7923L, 7951L, 7979L, 8007L,
8035L, 8063L, 8091L, 8119L, 8147L, 8157L, 8203L, 8231L, 8259L,
8287L, 8315L, 8343L, 8371L, 8399L, 8427L, 8455L, 8465L, 8511L,
8539L, 8567L, 8595L, 8623L, 8651L, 8679L, 8707L, 8735L, 8763L,
8773L, 8819L, 8847L, 8875L, 8903L, 8931L, 8959L, 8987L, 9015L,
9043L, 9071L, 9081L, 9127L, 9155L, 9183L, 9211L, 9239L, 9267L,
9295L, 9323L, 9351L, 9379L, 9382L, 9417L, 9463L, 9491L, 9519L,
9547L, 9575L, 9603L, 9631L, 9659L, 9687L, 9715L, 9725L, 9771L,
9799L, 9827L, 9855L, 9883L, 9911L, 9939L, 9967L, 9995L, 10023L,
10033L, 10079L, 10107L, 10135L, 10163L, 10191L, 10219L, 10247L,
10275L, 10303L, 10331L, 10341L, 10387L, 10415L, 10443L, 10471L,
10499L, 10527L, 10555L, 10583L, 10611L, 10639L, 10649L, 10695L,
10723L, 10751L, 10779L, 10807L, 10835L, 10863L, 10891L, 10919L,
10947L, 10957L, 11003L, 11031L, 11059L, 11087L, 11115L, 11143L,
11171L, 11199L, 11227L, 11255L, 11265L, 11311L, 11339L, 11367L,
11395L, 11423L, 11451L, 11479L, 11507L, 11535L, 11563L, 11573L,
11619L, 11647L, 11675L, 11703L, 11731L, 11759L, 11787L, 11815L,
11843L, 11871L, 11881L, 11927L, 11955L, 11983L, 12011L, 12039L,
12067L, 12095L, 12123L, 12151L, 12179L, 12189L, 12235L, 12263L,
12291L, 12319L, 12347L, 12375L, 12403L, 12431L, 12459L, 12487L,
12490L, 12525L, 12571L, 12599L, 12627L, 12655L, 12683L, 12711L,
12739L, 12767L, 12795L, 12823L, 12833L, 12879L, 12907L, 12935L,
12963L, 12991L, 13019L, 13047L, 13075L, 13103L, 13131L, 13141L,
13187L, 13215L, 13243L, 13271L, 13299L, 13327L, 13355L, 13383L,
13411L, 13439L, 13449L, 13495L, 13523L, 13551L, 13579L, 13607L,
13635L, 13663L, 13691L, 13719L, 13747L, 13757L, 13803L, 13831L,
13859L, 13887L, 13915L, 13943L, 13971L, 13999L), class = "data.frame")
ggplot(data = data2, aes(sample = X)) +
geom_point(stat = "qq", colour = "gray40", size = 5) +
stat_smooth(method = "loess") +
theme(axis.text.y = element_text(size = 15),
axis.text.x = element_text(size = 15),
axis.title.x = element_text(size = 18, face = "bold"),
axis.title.y = element_text(size = 18, face = "bold"),
legend.position = "bottom", legend.title = element_blank(),
legend.text = element_text(size = 14))
如果你重复三次,那么你会得到三个随机元素。 你仍然可以创建一个函数来使代码DRY。
$scope.randomItem = data[Math.floor(Math.random() * data.length)];
答案 1 :(得分:0)
如果调用三次,上面的解决方案可以多次获得相同的项目。您可以使用splice()从原始数组中删除该项目。
function getRandomItem(items) {
var randomIndex = Math.floor(Math.random() * items.length);
var item = items.splice(randomIndex, 1);
return item[0];
}