我正在嘗試遍歷陣列內的物件內的陣列,并獲取所有科目匹配的教師。這是嵌套陣列 Teacher:
teachers: [
{name: "Dave", subjects: ["english", "math"]},
{name: "Jamal", subjects: ["history", "science"]},
{name: "Brian", subjects: ["science", "gym"]},
{name: "Sally", subjects: ["math", "history"]}
]
這是主題陣列:
subjects: ["english", "gym"]
我希望能夠讓所有有“英語”和“體操”科目的老師都能參加。所以基本上需要取回一個輸出:
teachers: [
{name: "Dave", subjects: ["english", "math"]},
{name: "Brian", subjects: ["science", "gym"]}
]
到目前為止,這是我想出的,但這只會渲染第一個包含“english”的物件,即 Dave。我意識到并回傳使它退出回圈,但我必須添加并回傳,否則它將是一個雙重渲染錯誤。答案很可能是一種完全不同的方式,因此任何方法都會受到贊賞!
subjects.each do |subject|
Teacher.all.each do |teach|
if (teach.subjects).include?(subject) then
render json: teach and return
end
end
end
teachers: [
{name: "Dave", subjects: ["english", "math"]}
]
我怎樣才能讓回圈也能找回布賴恩?
uj5u.com熱心網友回復:
聽起來您正在尋找任何教授主題陣列中任何科目的老師,所以:
teachers = [
{name: "Dave", subjects: ["english", "math"]},
{name: "Jamal", subjects: ["history", "science"]},
{name: "Brian", subjects: ["science", "gym"]},
{name: "Sally", subjects: ["math", "history"]}
]
subjects = ["english", "gym"]
teachers.select do |teacher|
(subjects & teacher[:subjects]).size > 0
end
ampersane 運算子是陣列元素之間的交集 - 換句話說,兩者中的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440698.html
