一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - perl - Perl與JS的對比分析(數(shù)組、哈希)

Perl與JS的對比分析(數(shù)組、哈希)

2020-06-24 10:07jingxian perl

下面小編就為大家?guī)硪黄狿erl與JS的對比分析(數(shù)組、哈希)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

上一篇列出了Perl中定義數(shù)組,對象的方式與JS的異同。這里繼續(xù)補充數(shù)組,哈希的相關(guān)操作。

一、數(shù)組

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

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

?
1
2
3
@goods = qw/pen pencil/;
pop(@goods); # @goods 變成 (pen)
push(@goods, 'brush'); # @goods 變?yōu)?(pen, brush)

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

?
1
2
pop @goods; # @goods 變成 pen
push @goods, 'brush'; # @goods 變?yōu)?(pen, brush)

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

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

4,逆序數(shù)組,Perl有reverse函數(shù),JS沒有對應函數(shù)。

5,排序數(shù)組sort,Perl和JS都有。

2,3,4,5提到的函數(shù)不貼演示代碼了。

6,JS使用length屬性獲取數(shù)組長度,Perl不同,有3種方式獲取

?
1
2
3
4
5
6
7
8
9
10
@goods = qw/pen pencil/;
 
# 將數(shù)組變量賦值給一個標量變量
$len = @goods;
 
# 使用scalar函數(shù)
$len = scalar(@goods);
 
# 最后一個元素的索引加1
$len = $#goods + 1;

7,遍歷數(shù)組,Perl用foreach函數(shù)

?
1
2
3
4
5
6
7
8
9
10
11
@goods = qw/pen pencil brush/;
 
# 默認的$_
foreach (@goods) {
 print "$_"."\n";
}
 
# 自定義變量
foreach $item (@goods) {
 print "$item"."\n";
}

ES5可以用forEach

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

二、哈希

1,獲取keys和values

?
1
2
3
4
5
6
%person = (
 name => 'Jack',
 age => 30,
);
@k = keys %person; # (name, age)
@v = values $person; # ('Jack', 30)

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

?
1
2
3
4
5
person = {
 name: 'Jack',
 age: 30
}
Object.keys(person) // ['name', 'age']

2,獲取鍵值對(key-value)數(shù)量(對Perl來說很容易)

?
1
2
3
4
5
%person = (
 name => 'Jack',
 age => 30,
);
$len = keys %person; # 2

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%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函數(shù)

?
1
2
3
4
5
6
7
8
9
%person = (
 name => 'Jack',
 age => 30,
);
if (exists $person{ndame}) {
 print 'yes';
} else {
 print 'no';
}

JS用in運算符。

5,刪除key,都用delete,但Perl是函數(shù),JS是運算符

?
1
2
3
4
5
%person = (
 name => 'Jack',
 age => 30,
);
delete $person{'name'};

三、數(shù)組與哈希互換

Perl里哈希很容易就被轉(zhuǎn)成數(shù)組

?
1
2
3
4
5
%person = (
 name => 'Jack',
 age => 30,
);
@arr = %person; # 將哈希轉(zhuǎn)成數(shù)組 變成了('name', 'Jack', 'age', 30)

數(shù)組轉(zhuǎn)成哈希

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

打印如下

Perl與JS的對比分析(數(shù)組、哈希)

以上互換JS里沒有原生支持,需自行實現(xiàn)。

以上這篇Perl與JS的對比分析(數(shù)組、哈希)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
  • perlperl pop push shift unshift實例介紹

    perl pop push shift unshift實例介紹

    perl的pop跟push操作數(shù)組的最右邊,shift跟unshift操作數(shù)組的最左邊 ...

    腳本之家4612020-06-10
  • perlperl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析

    perl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析

    這篇文章主要介紹了perl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析,本文重點在于講解@ARGV的用法,并通過實例來說明,需要的朋友可以參考下 ...

    perl教程網(wǎng)6162020-06-18
  • perlperl常見問題集合之二

    perl常見問題集合之二

    哪些平臺上有 Perl?要到哪里去找? Perl的標準發(fā)行版(由 perl 發(fā)展小組負責維護)僅以原始碼形式發(fā)行。您可在 http: //www.perl.com/CPAN/src/latest.tar.gz處取得。這個檔...

    腳本之家2102020-05-29
  • perlPerl的經(jīng)典用法分享

    Perl的經(jīng)典用法分享

    Perl的經(jīng)典用法分享,學習perl的朋友可以參考下 ...

    腳本之家6562020-06-06
  • perlPerl使用nginx FastCGI環(huán)境做WEB開發(fā)實例

    Perl使用nginx FastCGI環(huán)境做WEB開發(fā)實例

    這篇文章主要介紹了Perl使用nginx FastCGI環(huán)境做WEB開發(fā)實例,實現(xiàn)了路由系統(tǒng)和模板系統(tǒng),需要的朋友可以參考下...

    Perl教程網(wǎng)2412020-06-18
  • perlPerl List::Util模塊使用實例

    Perl List::Util模塊使用實例

    這篇文章主要介紹了Perl List::Util模塊使用實例,本文給出掃描符合條件的某個列表并取出第一個符合條件的、求1到1000之間的和 、求一組數(shù)字的最大值與最小...

    腳本之家4712020-06-22
  • perlperl use vars pragma使用技巧

    perl use vars pragma使用技巧

    perl 中的vars是perl中的一個pragma(預編譯指示符),專門用來預定義全局變量,這些預定義后的全局變量在qw()列表中,在整個引用perl文件中皆可使用,即便使...

    perl教程網(wǎng)6812020-06-16
  • perlPerl從文件中讀取字符串的兩種實現(xiàn)方法

    Perl從文件中讀取字符串的兩種實現(xiàn)方法

    有時候我們需要從文件中讀取字符串,這里簡單介紹下, 需要的朋友可以參考下 ...

    腳本之家6252020-06-08
主站蜘蛛池模板: 国产情侣偷国语对白 | 喷出奶汁了h | kk4444了欧美 | 色综合久久夜色精品国产 | 精品国产成人a区在线观看 精品高潮呻吟99AV无码视频 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 强漂亮白丝女教师小说 | 99精品国产成人一区二区 | 99在线精品免费视频九九视 | 成年美女黄网站色视频大全免费 | 二次元美女扒开内裤露尿口 | 视频一区二区国产 | 国产原创精品 | 亚洲国产成人精品无码区99 | 免费精品在线视频 | 免费观看美女被cao视频 | 欧美人妖大啪啪 | 亚洲天堂v | 99热国产在线 | 国产真实一区二区三区 | 亚洲国产欧美在线人成 | 免费一级特黄特色大片∵黄 | 5g影院成人 | 欧美日韩视频一区三区二区 | 男人最爱看的网站 | 欧美一级视频在线 | 亚洲天堂成人在线观看 | 好紧好爽范冰冰系列 | 99久久精品免费看国产一区二区 | 黄色cc| 精品国产乱码久久久久久软件 | 精品一区二区三区高清免费观看 | 2020年国产精品午夜福利在线观看 | 四虎免费影院在线播放 | 大学生按摩黄a级中文片 | 精品免费久久久久久成人影院 | 朝鲜美女免费一级毛片 | 青青久久精品国产 | 国产精品四虎在线观看免费 | 国产欧美一区视频在线观看 | 国产真实偷乱视频在线观看 |