Ruby shuffle方法不适用于json解析数组

Szy*_*una 0 ruby json

我有一个像这样的json文件:

{
  "data": "12-14.02.2013",
  "uwagi": ["Pierwsza","Druga","Trzecia"],
  "tytul": "Kolokwium 1",
  "przedmiot": "Muzykologia",
  "questions" : [
    {
     "punkty": 2,
     "pytanie" : "Czy lubi Pan reggae?",
     "odpowiedz" : "Tak, bardzo",
     "verbatim" : "if (a){b=5}"
    },
    {
     "punkty": 3,
     "pytanie" : "Czy lubi Pan hip-hop?",
     "odpowiedz" : "Nieszczególnie"
    },
    {
     "punkty": 5,
     "pytanie" : "Czy lubi Pan disco polo?",
     "odpowiedz" : "Nie"
    }]
}
Run Code Online (Sandbox Code Playgroud)

和像这样的ruby代码:

require 'json'

file = open("pytania.json")
json = file.read

parsed = JSON.parse(json)

questionsArr = parsed["questions"]
questionsArr.shuffle
puts questionsArr
Run Code Online (Sandbox Code Playgroud)

questionsArr在.shuffle之后没有排序

我试过.sort_by {rand}并改组解析["问题"],没有成功.

怎么了?

Tam*_*ash 5

你需要shuffle!阵列!

require 'json'

file = open("pytania.json")
json = file.read

parsed = JSON.parse(json)

questionsArr = parsed["questions"]
questionsArr.shuffle!
puts questionsArr
Run Code Online (Sandbox Code Playgroud)

shuffle单独的方法将返回一个新的混洗数组,不会更改原始questionsArr数组.所以你应该使用shuffle!将改变原始questionsArr数组的bang 方法,如上所示,或者将结果shuffle放在一个新变量中并像这样使用它:

require 'json'

file = open("test.json")
json = file.read

parsed = JSON.parse(json)

questionsArr = parsed["questions"]
shuffledArr = questionsArr.shuffle
puts shuffledArr
Run Code Online (Sandbox Code Playgroud)