首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数组拆分为子数组2

将数组拆分为子数组2
EN

Stack Overflow用户
提问于 2014-11-27 00:51:35
回答 1查看 76关注 0票数 0

这个问题来自我之前问过的一个类似的问题:将数组拆分为子数组

我已经为这个代码挣扎了一段时间了。我有一个数据“主”数组,每个元素都有一个lft & rgt值。我希望将这个“主”数组分解为一个子数组“group”数组。这些子数组的期望分组如下所示。

创建新子数组的触发器是lft值不在数组中第一个elemenet的lft & rgt值之间的地方。

我的想法是: a)初始化第一个数组,然后循环遍历其余的元素。( b)对照最后一个子数组中第一个元素的lft & rgt值检查元素的lft值。c)如果超出范围,则创建一个新的子数组,d)将元素附加到最后一个子数组。

当我尝试这个方法时,我发现一个未知方法“新”的错误。

代码语言:javascript
运行
复制
def display_visiting
  groups = []

  master = []
  master << { id: 1, name: "Fred", lft: 1, rgt: 4 }
  master << { id: 4, name: "Sue", lft: 2, rgt: 3 }

  master << { id: 2, name: "May", lft: 5, rgt: 12 }
  master << { id: 5, name: "Helen", lft: 6, rgt: 7 }
  master << { id: 6, name: "Peter", lft: 8, rgt: 9 }
  master << { id: 7, name: "Grace", lft: 10, rgt: 11 }

  master << { id: 3, name: "Brian", lft: 13, rgt: 18 }
  master << { id: 8, name: "Michael", lft: 14, rgt: 15 }
  master << { id: 9, name: "Paul", lft: 16, rgt: 17 }

  groups[0] = master.shift(1)
  master.each do |employee|
    if (employee.lft < groups.last.first.lft) or (employee.lft > groups.last.first.rgt)
      groups.new
    end
    groups.last << employee    
  end
  return groups
else
  return nil
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-27 01:08:52

new是一个类方法,用于创建一个类的新实例。例如一个物体。groups是数组类的一个实例,这就是为什么它没有new方法的原因。如果您不太熟悉类方法和实例方法,查看这篇文章

因此,如果您想在组数组的末尾添加一个新的array,您可以更改如下:

代码语言:javascript
运行
复制
groups.new

对此:

代码语言:javascript
运行
复制
groups << Array.new

但是,您可以使用与初始化master数组完全相同的数组初始化速记:

代码语言:javascript
运行
复制
groups << [] 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27161404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档