激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

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

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

2020-06-24 10:07jingxian perl

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

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

一、數(shù)組

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

1,對(duì)數(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)用時(shí)小括號(hào)是可選的(視上下文而定),就象前面使用的print。以下是等價(jià)的

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

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

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

4,逆序數(shù)組,Perl有reverse函數(shù),JS沒有對(duì)應(yīng)函數(shù)。

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

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

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

?
1
2
3
4
5
6
7
8
9
10
@goods = qw/pen pencil/;
 
# 將數(shù)組變量賦值給一個(gè)標(biāo)量變量
$len = @goods;
 
# 使用scalar函數(shù)
$len = scalar(@goods);
 
# 最后一個(gè)元素的索引加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/;
 
# 默認(rèn)的$_
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,獲取鍵值對(duì)(key-value)數(shù)量(對(duì)Perl來說很容易)

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

對(duì)于JS來說,可能需要for in整個(gè)對(duì)象

?
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,遍歷對(duì)象

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一個(gè)for in即可。

4,判斷某個(gè)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運(yùn)算符。

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

?
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的對(duì)比分析(數(shù)組、哈希)

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

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

延伸 · 閱讀

精彩推薦
  • perlperl pop push shift unshift實(shí)例介紹

    perl pop push shift unshift實(shí)例介紹

    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淺析,本文重點(diǎn)在于講解@ARGV的用法,并通過實(shí)例來說明,需要的朋友可以參考下 ...

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

    perl常見問題集合之二

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

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

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

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

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

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

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

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

    Perl List::Util模塊使用實(shí)例

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

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

    perl use vars pragma使用技巧

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

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

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

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

    腳本之家6252020-06-08
主站蜘蛛池模板: 久久亚洲精品国产一区 | 高清做爰免费无遮网站挡 | 在线看一区二区三区 | 欧美在线日韩 | 免费国产视频大全入口 | 日韩精品中文字幕一区二区三区 | 日日噜噜噜夜夜狠狠久久蜜桃 | v片在线看 | 欧美性生活网站 | 91精品视频在线看 | 日本不卡一区二区在线观看 | 久久精品一级片 | 欧美成年性h版影视中文字幕 | 欧美一级淫片免费视频1 | 精品久久久久久久久中文字幕 | 国产成人观看 | 亚洲精品成人久久久 | 久久恋| 国产亚洲精品久久 | 久久久精品视频免费看 | 久草在线新时代视觉 | 一级片在线免费 | 久久色网站| 九九热精品视频在线播放 | 一色桃子av大全在线播放 | 久久精品一区二区三区不卡牛牛 | 免费观看黄色一级视频 | 成人不卡 | 福利在线国产 | 免费观看视频在线观看 | 国产精品视频久久久 | 91久久夜色精品国产网站 | 成人午夜天堂 | 欧美日韩中文字幕在线 | 一级@片| 免费网址黄 | 一级网站片| 日韩精品久久久久久久九岛 | 国产深夜福利视频在线播放 | 黄色免费网站在线播放 | 成人毛片视频在线观看 |