使用 LogicApp 对索引上的数组进行切片

Using LogicApp to slice an array on indices

提问人:Tim 提问时间:8/11/2022 更新时间:8/11/2022 访问量:797

问:

我正在尝试在 LogicApp 中实现一些我认为应该很容易实现的东西,但我没有管理它。

假设我有一个上一步的变量:“https://sharepoint/sites/test-site/Documents/somereport.pdf”。从这个字符串中,我需要简单地创建两个变量,第一个包含 ,第二个包含 .两者都将在后续步骤中使用。'https://sharepoint/sites/test-site''Documents/somereport.pdf'

为了尝试实现这一点,我尝试使用以下表达式:

  1. join(slice(split(triggerBody()?['Title'], '/'), 0, 5), '/')
  2. join(slice(split(triggerBody()?['Title'], '/'), 5), '/')

但是,我收到一个错误:.'The template language function 'slice' expects its first parameter to be of type string. The provided value is of type 'Array'.

这是因为拆分会产生一个数组。我现在已经知道“slice”是用于字符串的,但是数组类型是否有任何类似的功能?或者有没有其他(简单的)方法可以实现这一目标?这似乎应该是基本功能,但我无法弄清楚。

联接 拆分 azure-logic-apps

评论


答:

1赞 SwethaKandikonda 8/11/2022 #1

这可以通过几种方式实现。如果您尝试使用将结果作为数组类型的功能,那么您可以使用类似于以下表达式的东西。

1. join(take(split(outputs('Compose')?['Title'][0], '/'), 5),'/')
2. join(take(skip(split(outputs('Compose')?['Title'][0], '/'),5), length(split(outputs('Compose')?['Title'][0], '/'))),'/')

但是,作为替代方案,如果您尝试使用将结果作为字符串类型的功能,下面是满足您要求的另一个表达式。

1. slice(outputs('Compose')?['Title'][0],0,nthIndexOf(outputs('Compose')?['Title'][0],'/',5))
2. slice(outputs('Compose')?['Title'][0],add(nthIndexOf(outputs('Compose')?['Title'][0],'/',5),1),length(outputs('Compose')?['Title'][0]))

下面是我的逻辑应用

enter image description here

结果:

enter image description here

enter image description here

下面是逻辑应用的代码视图

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Compose": {
                "inputs": {
                    "Title": [
                        "https://sharepoint/sites/test-site/Documents/somereport.pdf"
                    ],
                    "age": 30,
                    "name": "John"
                },
                "runAfter": {},
                "type": "Compose"
            },
            "array_type_-_first_part": {
                "inputs": "@join(take(split(outputs('Compose')?['Title'][0], '/'), 5),'/')",
                "runAfter": {
                    "string_type__second_part": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "array_type_-_second_part": {
                "inputs": "@join(take(skip(split(outputs('Compose')?['Title'][0], '/'),5), length(split(outputs('Compose')?['Title'][0], '/'))),'/')",
                "runAfter": {
                    "array_type_-_first_part": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "string_type_-_first_part": {
                "inputs": "@slice(outputs('Compose')?['Title'][0],0,nthIndexOf(outputs('Compose')?['Title'][0],'/',5))",
                "runAfter": {
                    "Compose": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "string_type__second_part": {
                "inputs": "@slice(outputs('Compose')?['Title'][0],add(nthIndexOf(outputs('Compose')?['Title'][0],'/',5),1),length(outputs('Compose')?['Title'][0]))",
                "runAfter": {
                    "string_type_-_first_part": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    },
    "parameters": {}
}

评论

0赞 Tim 8/11/2022
是的,就像一个魅力。这真的帮助了我!我使用 take(),不知道该功能