首页 > 解决方案 > 基于相同的随机排序系统对两个数组进行排序

问题描述

我目前的项目是一个小 Jquery 游戏。Array Bildquelle 中的每张图片(我保存在一个 json 中)都属于 Array numbers 中的一个数字,但顺序相同,因此 Bild1 是数字 1 等等。

但我想以随机顺序显示它们。有没有办法在同一个随机系统上对它们进行排序?

先感谢您!

var Bildquelle = [
  "../img/Bild1.png",
  "../img/Bild2.png",
  "../img/Bild3.png",
  "../img/Bild4.png",
  "../img/Bild5.png",
  "../img/Bild6.png",
  "../img/Bild7.png",
  "../img/Bild8.png",
  "../img/Bild9.png",
  "../img/Bild10.png"
]
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
numbers.sort(function() {
  return Math.random() - .5
});

for (var i = 0; i < 10; i++) {
  var Karte = $('<img src=' + Bildquelle[i] + ' alt="Bild">').data('number', numbers[i]).attr('id', 'card' + numbers[i]).appendTo('#cardPile')
};

标签: javascriptarrayssorting

解决方案


可能最简单的方法是不使用numbers而是直接随机播放Bildquelle

  Bildquelle.sort(function() {
    return Math.random() - 0.5;
  });

现在Bilquelle[0]可能是"../img/Bild9.png"其他人之一。

但是,如果您想保留Bildquellenumbers随机播放数字,则应更改numbers为从零开始(作为数组):

  var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

你甚至可以直接获得 Bildquelle 的密钥:

 var numbers = Object.keys(Bildquelle);

现在您可以将其随机播放,并按一定数量访问 Bildquelle:

  Bildquelle[ numbers[0] ]

或在您的循环中:

  Bildquelle[ numbers[i] ]

PS:Bildquelle实际上应该是imagespictures遵循命名约定(如果你不断混合语言,它会变得更难阅读......)


推荐阅读