Perl與JS的比較(陣列 雜湊)

2021-09-06 06:41:06 字數 2641 閱讀 3408

可以對陣列進行增刪,插入。與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)

# 自定義變數

foreach $item (@goods)

es5可以用foreach

['pen', 'pencil', 'brush'].foreach(function(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 = 

object.keys(person) // ['name', 'age']

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

%person = (

name => 'jack',

age => 30,

);$len = keys %person; # 2

對於js來說,可能需要for in整個物件

function getobjlen(obj) 

return len

}var person =

getobjlen(person) // 2

3,遍歷物件

perl有兩種方式,一種while+each,一種獲取keys再foreach。

%person = (

name => 'jack',

age => 30,

);# 方式1

while ( ($k, $v) = each %person )

# 方式2

@keys = keys %person;

foreach(@keys) ."\n";

}

js乙個for in即可。

4,判斷某個key是否存在,perl用exists函式

%person = (

name => 'jack',

age => 30,

);if (exists $person) else

js用in運算子。

5,刪除key,都用delete,但perl是函式,js是運算子

%person = (

name => 'jack',

age => 30,

);delete $person;

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 )

列印如下

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

神奇的Perl 雜湊和陣列 6

1.1.1 each values keys sort 1 each each一般作用於雜湊和陣列,以2元素的列表形式返回雜湊的鍵值對和陣列的索引 值對。語法如下 each hash each array 比如 while key value each hash while index,value ...

Perl的列表與陣列

perl的列表相當於陣列 雜湊等資料結構的字面量,即可用於初始化陣列和雜湊,其形式為 x1,x2,x3,若列表中的元素均為字串,則可以用另一種便捷的形式 qw x1 x2 x3 範圍運算子 1.10 表示該列表包含1到10之間的10個數字,字母也可使用 陣列形式為 array 基本操作如下 初始化 ...

perl 中位值 二維雜湊 陣列的雜湊 排序 取整

use list util qw sum use posix sub median int 2 ceil 2 2 my a qw 1 2 3 4 my med median a 就可以得到陣列 a的中位值為2.5 構造二維雜湊 my hash foreach my i 1.10 i j 訪問fore...