2014-07-17 190 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