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 数组 - 遍历数组中的每个项目