首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jSONata以高性能的方式连接2个数组?

如何使用jSONata以高性能的方式连接2个数组?
EN

Stack Overflow用户
提问于 2020-03-21 13:47:05
回答 1查看 636关注 0票数 0

我希望使用JSONata以一种性能良好的方式连接2个具有大约500个元素的数组。

我已经找到了一种连接2个数组的方法,但它的性能不太好。请参见https://try.jsonata.org/VqzeZDAjA (下面复制了相同的输入/输出和查询)。

输入:

代码语言:javascript
复制
{
  "_msgid": "a070e32c.e71ed",
  "topic": "",
  "rc": {
    "code": 0
  },
  "table1": {
    "array1": [
      {
        "country_region": "Thailand",
        "field_A": "A for Thailand"
      },
      {
        "country_region": "Japan",
        "field_A": "A for Japan"
      }
    ]
  },
  "array2": [
    {
      "country_region": "Thailand",
      "field_B": "B for Thailand"
    },
    {
      "country_region": "Japan",
      "field_B": "B for Japan"
    }
  ]
}

预期输出:

代码语言:javascript
复制
{
  "array1": [
    {
      "country_region": "Thailand",
      "field_A": "A for Thailand",
      "field_B": "B for Thailand"
    },
    {
      "country_region": "Japan",
      "field_A": "A for Japan",
      "field_B": "B for Japan"
    }
  ]
}

工作查询,但在有500个元素的数组中性能不高。

代码语言:javascript
复制
(
    $array2 := array2;
    table1 ~> | array1 | { "field_B" : 
              ($country_region := country_region;
               $array2[$country_region=$.country_region])
                .field_B}|
)

更新2020-03-29

在这里,上面声称工作查询(见上面)不是很好的性能。进一步分析表明,这不是事实:上述查询的实际性能很好(类似于已批准的查询的性能)。我遇到的性能问题是由另一个与此联接无关的JSONata查询引起的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-23 09:03:21

不确定它是否具有更多的性能,但我会使用联接语法来执行以下操作:

代码语言:javascript
复制
{
    "array1": array2@$A2.table1.array1@$A1[$A1.country_region = $A2.country_region].$merge([$A1, $A2])   
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60788572

复制
相关文章

相似问题

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