Zapier 编写的代码循环遍历一组对象,每个对象提取一个值,然后平均这些值

Posted

技术标签:

【中文标题】Zapier 编写的代码循环遍历一组对象,每个对象提取一个值,然后平均这些值【英文标题】:Code by Zapier to loop through an array of objects, pulling out one value per object and then average those values 【发布时间】:2020-06-09 19:23:57 【问题描述】:

对 Zapier 使用 javascript,我试图从对象数组中计算属性的平均值。

这是其中一个对象...


    "code": 0,
    "data": [
        
            "id": "28737",
            "owner": "1",
            "date": "1581945706",
            "dla": "0",
            "dlm": "1582551517",
            "system_source": "3",
            "source_location": null,
            "ip_addy": null,
            "ip_addy_display": null,
            "import_id": "0",
            "contact_cat": "*/*",
            "bulk_mail": "1",
            "bulk_sms": "0",
            "bindex": "76",
            "f1849": "9898983",
            "f1850": "Foundation Course 2: Lecture 1 QUIZ",
            "f1851": "0",
            "f1853": "John Doe",
            "f1854": "TRUE",
            "f1855": "93",    // <= calculate average for this property
            "f1859": "292",
            "f1862": "0",
            "f1867": "Kajabi",
            "f1868": "0",
            "unique_id": "7WB77PT"
        ,
        ...
    ]

我需要为每个对象提取名为 f1855 的属性的值,然后计算平均值并通过 POST 返回该值。

我不认为这用 JavaScript 很难做到,但我不习惯 Zapier 的规则和限制。

任何帮助表示赞赏!

【问题讨论】:

【参考方案1】:

**看到您帖子的编辑版本,我现在不确定您的输入数据是示例中的 data 数组还是这些对象的数组。如果是第二个,那么我不知道您是否想要每个对象的 data 道具的平均值。或者是其他东西。但无论哪种情况,下面的代码都可能是解决方案的一部分。


我对 Zapier 一无所知,但 JavaScript 部分可能看起来像这样:

const inputData = //your array of objects
const reducer = (sum, theObject) => sum + parseFloat(theObject.f1855)
const sumF1855 = inputData.reduce(reducer, 0)
const avgF1855 = sumF1855 / inputData.length

此代码不处理错误情况(例如,如果一个对象缺少 f1855 属性,或者如果 inputData 为空,则除以零)。希望它能给你一个开始的想法。

【讨论】:

实际的 inputData 数组中有 50 个对象,所以我试图为数组中的每个对象收集该键的值,这些值是数字的,然后获取平均值并发送回 Ontraport。 “inputData 数组”是指inputData.data 还是[inputData1, inputData2, ..]?试图弄清楚这里的语义。对于第一种情况,我的答案很容易工作,并且需要扩展以处理第二种情况。 对不起,混淆了,我的意思是我在 Zapier 的第一步有响应,它是一个包含键/值对的 json 格式的对象数组。我相信它的实际名称是数据。 "code": 0, "data": [ //第一个对象从这里开始 我在尝试使用上面的代码时遇到的错误是 TypeError: inputData.reduce is not a function

以上是关于Zapier 编写的代码循环遍历一组对象,每个对象提取一个值,然后平均这些值的主要内容,如果未能解决你的问题,请参考以下文章

使用哈巴狗每次循环遍历一组对象

Zapier - Catch Hook - JSON 数组 - 遍历数组中的每个项目

Swift iOS - 我为啥可以循环遍历一组类对象并进行属性更改但不能更改结构[重复]

返回“Zapier 代码”中的对象数组

如何在一组对象中查找特定值?

angularjs怎么遍历每个对象的属性的值