如何将另一个参数传递给javascript map()函数
我想从下面的链接中给出的解决方案创建广义函数 例如,我的数组如下所示如何将另一个参数传递给javascript map()函数,javascript,snowflake-cloud-data-platform,Javascript,Snowflake Cloud Data Platform,我想从下面的链接中给出的解决方案创建广义函数 例如,我的数组如下所示 ID TAGS 1 {"tags": [{"tag1": "a"}, {"tag1": "b"}, {"tag2":"123"}, {"tag2":"345"}]} 2 {"tags": [{"tag1&
ID TAGS
1 {"tags": [{"tag1": "a"}, {"tag1": "b"}, {"tag2":"123"}, {"tag2":"345"}]}
2 {"tags": [{"tag1": "c"}, {"tag1": "d"}, {"tag2":"789"}, {"tag2":"678"}]}
从上面链接中提供的javascript UDF来看,它工作正常。然而,我想把它作为一种通用的方法来使用,比如通过将它们作为输入参数传递来获取tag1和tag2的值。请在下面找到UDF,它可以通过直接调用它们来获取tag1/tag2
create or replace function extract_tags(a array)
returns array
language javascript
strict
as '
return A.map(function(d) {return d.tag1});
';
SELECT ID, EXTRACT_TAGS(PAYLOAD:tags) AS tags from t1; -- This will give the result for tag1.
我不想重新创建相同的函数来获取tag2值。相反,我们希望将键作为参数传递,并获得所需的结果。在此方面的任何帮助都将不胜感激。。下面是一个例子。。抱歉,如果以下代码不合适。。我不熟悉爪哇和雪花
create or replace function extract_tags(a array, b varchar)
returns array
language javascript
strict
as '
return A.map(function(d) {return d.{B}}); //Calling the second parameter to get the appropriate values
';
SELECT ID, EXTRACT_TAGS(PAYLOAD:tags, 'tag1') AS tags from t1; --To get the tag1 values
SELECT ID, EXTRACT_TAGS(PAYLOAD:tags, 'tag2') AS tags from t1; --Using the same function to get tag2 values
在中返回A.map(函数(d){returnd.{B})代码>映射函数应该是返回d[B]
(将@Pipetus answer在注释中复制到答案中,这样这个问题就可以找到答案的结尾)除非我遗漏了什么,否则我想map函数应该是返回d[B]
。谢谢mate@Pipetus。。这起作用了