Perl與JS的對比分析(數組、雜湊)_perl

來源:互聯網
上載者:User

上一篇列出了Perl中定義數組,對象的方式與JS的異同。這裡繼續補充數組,雜湊的相關操作。

一、數組

可以對數組進行增刪,插入。與JS不同的是這些函數都是全域的,JS則是掛在Array.prototype上。

1,對數組尾部的操作pop(刪除最後的元素)、push(在尾部添加)

@goods = qw/pen pencil/; pop(@goods); # @goods 變成 (pen) push(@goods, 'brush'); # @goods 變為 (pen, brush) 

在Perl中,函數調用時小括弧是可選的(視上下文而定),就象前面使用的print。以下是等價的

pop @goods; # @goods 變成 pen push @goods, 'brush'; # @goods 變為 (pen, brush) 

2,對數組首部的操作shift(刪除第一個元素)、unshift(在首部添加元素)

3,任意位置刪除或插入splice

4,逆序數組,Perl有reverse函數,JS沒有對應函數。

5,排序數組sort,Perl和JS都有。

2,3,4,5提到的函數不貼示範代碼了。

6,JS使用length屬性擷取數組長度,Perl不同,有3種方式擷取

@goods = qw/pen pencil/;  # 將陣列變數賦值給一個標量變數 $len = @goods;  # 使用scalar函數 $len = scalar(@goods);  # 最後一個元素的索引加1 $len = $#goods + 1; 

7,遍曆數組,Perl用foreach函數

@goods = qw/pen pencil brush/;  # 預設的$_ foreach (@goods) {  print "$_"."\n"; }  # 自訂變數 foreach $item (@goods) {  print "$item"."\n"; } 

ES5可以用forEach

['pen', 'pencil', 'brush'].forEach(function(item) {   console.log(item) }) 

二、雜湊

1,擷取keys和values

%person = (  name => 'Jack',  age => 30, ); @k = keys %person; # (name, age) @v = values $person; # ('Jack', 30) 

ES5有Object.keys,但沒有Object.values

person = {  name: 'Jack',  age: 30 } Object.keys(person) // ['name', 'age'] 

2,擷取索引值對(key-value)數量(對Perl來說很容易)

%person = (  name => 'Jack',  age => 30, ); $len = keys %person; # 2 

對於JS來說,可能需要for in整個對象

function getObjLen(obj) {   var len = 0   for (var a in obj) {     if (obj.hasOwnProperty(a))     len++   }   return len }  var person = {   name: 'Jack',   age: 30 } getObjLen(person) // 2

3,遍曆對象

Perl有兩種方式,一種while+each,一種擷取keys再foreach。

%person = (  name => 'Jack',  age => 30, );  # 方式1 while ( ($k, $v) = each %person ) {  print "$k: $v"."\n"; }  # 方式2 @keys = keys %person; foreach(@keys) {  print "$_: ".$person{$_}."\n"; } 

JS一個for in即可。

4,判斷某個key是否存在,Perl用exists函數

%person = (  name => 'Jack',  age => 30, ); if (exists $person{ndame}) {  print 'yes'; } else {  print 'no'; } 

JS用in運算子。

5,刪除key,都用delete,但Perl是函數,JS是運算子

%person = (  name => 'Jack',  age => 30, ); delete $person{'name'}; 

三、數組與雜湊互換

Perl裡雜湊很容易就被轉成數組

%person = (  name => 'Jack',  age => 30, ); @arr = %person; # 將雜湊轉成數組 變成了('name', 'Jack', 'age', 30) 

數組轉成雜湊

@nums = qw/zero 0 one 1 two 2/; %hash = @nums; while( ($k, $v) = each %hash ) {  print "$k: $v\n"; } 

列印如下

以上互換JS裡沒有原生支援,需自行實現。

以上這篇Perl與JS的對比分析(數組、雜湊)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.