当前位置: 首页 > 知识库问答 >
问题:

嵌套匹配

丰岳
2023-03-14

目前我有这个阵列=

[["abc", [0.0, 1.0, 2.0, 3.0], "Testing"], ["efg", [1.0, 2.0, 3.0, 4.0], "Testing"]] 

条件:

如果每个嵌套数组index2都相同,那么我想用[0.0 1.0,1.0 2.0,2.0 3.0,3.0 4.0] = [1.0,3.0,5.0,7.0]来求和

我想要的最终结果:[[“efg”, [1.0, 3.0, 5.0, 7.0], “测试”]]

有什么方法或建议来获得这个结果吗?

共有1个答案

宗政元青
2023-03-14

我很高兴在TDD中构建这个:

def nested_match_sum(data)
  grouped = data.group_by(&:last)

  grouped.values.map do |array|
    array.inject(nil) do |result, elem|
      if result
        elem[1] = array_position_sum(elem[1], result[1])
      end

      elem
    end
  end

end

def array_position_sum(first, second)
  first.zip(second).map do |couple|
    couple.first + couple.last
  end
end

require 'rspec/autorun'

describe "#nested_match_sum" do
  let(:data) do
    [
      ["abc", [0.0, 1.0, 2.0, 3.0], "Testing"],
      ["efg", [1.0, 2.0, 3.0, 4.0], "Testing"]
    ]
  end

  it "groups by last element and aggregates the sum" do
    expect(nested_match_sum(data)).to eq(
      [["efg", [1.0, 3.0, 5.0, 7.0], "Testing"]]
    )
  end

  context "giving multiple keys" do
    let(:data) do
      [
        ["abc", [0.0, 1.0, 2.0, 3.0], "Testing"],
        ["efg", [1.0, 2.0, 3.0, 4.0], "Testing"],
        ["abc", [0.0, 1.0, 2.0, 3.0], "Another"],
        ["ghj", [2.0, 3.0, 4.0, 5.0], "Another"]
      ]
    end

    it "works aswell" do
      expect(nested_match_sum(data)).to eq([
        ["efg", [1.0, 3.0, 5.0, 7.0], "Testing"],
        ["ghj", [2.0, 4.0, 6.0, 8.0], "Another"]
      ])
    end
  end
end

describe "#array_position_sum" do
  let(:first) { [1, 2, 3] }
  let(:second) { [4, 5, 6] }

  it "sums two arrays by position" do
    expect(array_position_sum(first, second)).to eq(
      [5, 7, 9]
    )
  end
end
 类似资料:
  • 我试图创建一个正则表达式模式来匹配每个(内容*),但是该模式可以在另一个((内容)(内容))中找到。我尝试了,但这返回了外部的。 例如:字符串应返回: 第一个匹配: 第二个匹配: 编辑: 我试过:但在?R(未知标志)附近出现错误

  • 该示例摘自Elasticsearch参考:https://www.elastic.co/guide/en/Elasticsearch/reference/5.3/nested.html 我的索引和这个差不多。唯一的区别是user.first和user.last是关键字类型,所以我可以对它们使用过滤器。 在两种情况下,我应该使用什么查询来获取与上面数组匹配的文档(正好是两个项,一个项是John Sm

  • 我是Elasticsearch的新手,我提出了一个问题,Elasticsearch嵌套查询是否只能为嵌套字段返回匹配的嵌套文档。 对于示例,我有一个名为的类型,其中嵌套字段名为 和嵌套查询 我需要的是搜索有提到足球的评论的博客文章,每个博客文章的评论数与足球相匹配(在例子中它数为1,因为另一个评论刚刚提到篮球)。 然而,Elasticsearch似乎总是返回完整的文档,所以我如何才能实现它,或者我

  • null 当然有更好的方法吗?

  • 问题内容: 在以下示例中: 为什么对second(b)的调用有效,但对third(a)的调用却无效 ? 我收到以下错误: 问题答案: 如果您希望能够使用自变量进行调用,则需要将签名更改为此: 将上面的工作,因为不像,是兼容。这样想: 推理很简单。如果你有 然后,如果您 可以这样 调用该方法:

  • 我有一个有趣的两难处境: 我有一门课,假设它叫做文件柜。 FileCabinet存储文件的链接列表,称为“filesInCabinet”。 在每个文件中,还有另一个文件链接列表,称为“relatedFiles”。 所以它看起来像这样,例如: 文件柜1 文件1 文件3 文件3 文件1 文件2 文件2 我遇到的问题是,嵌套列表(“relatedFiles”)包含文件的单独实例,因此实际上更像: 文件柜