2014-07-17 154 views
0

我有一个由perl模块生成的perl中未知大小的数组。现在,我正好想要查找在perl数组中是否存在传递给jquery函数的值。在JavaScript中访问Perl数组

有没有办法我可以做一个元素按元素比较输入值与perl数组中的每个值?

我环顾四周,看起来像我可以通过提供索引来访问jQuery中的perl数组,但我们不知道数组的大小。所以我不知道什么时候停止。

我的水泥工代码看起来类似于:

<%perl> 
    my @testArray = [call to some other perl module to get the values] 
</%perl> 

<script type="text/javascript"> 
    function checkIfValExistsInTestArray(val) { 
     // Code to test if "val" exists in "@testArray". Returns boolean true/false. 
    } 
</script> 
+0

你可以与我们分享你的尝试吗? –

+0

,因为它们都运行在不同的环境中,并且在不同的时间需要更加具体。 – charlietfl

+0

@charlietfl我编辑了语句并添加了示例场景,代码如何。我对这项技术相当陌生,因此一半熟知查询。 – rajneesh2k10

回答

2

要检查它是否存在,你想要一个散列。传输数据的简单方法是使用JSON对其进行编码。

% use JSON qw(); 

<script type="text/javascript"> 

var testArray = <% JSON->new()->encode({ map { $_ => 1 } get_values() }) %>; 

function checkIfValExistsInTestArray(val) { 
    return testArray[val]; 
} 

</script> 

例如,如果get_values()返回appleorange,你会得到

<script type="text/javascript"> 

var testArray = {"apple":1,"orange":1}; 

function checkIfValExistsInTestArray(val) { 
    return testArray[val]; 
} 

</script> 

我不知道梅森,所以有可能是错误的,但你的想法。

+0

感谢您的快速回复。万分感谢。看看你的编辑版本,它可以让我清楚我们在这里要做什么。您正在将perl版本化的数组列表序列化为JSON映射,其值为1并尝试查找映射。我不知道正在使用的JSON模块,但这是我可以从你的代码中提取出来的。如果错了,请纠正我。 – rajneesh2k10

+1

没错。 JSON是JS的一个子集,所以你基本上生成JS代码来创建一个你可以查询的对象。 – ikegami

+0

这是一个很酷的东西。再次感谢。 :) – rajneesh2k10