幸运蛋蛋pc开奖
下面小编就为大家带来一篇Perl与JS的对比分析(数组、哈希)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

上一篇列出了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都?#23567;?/p>

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的对比分析(数组、哈希)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持爱安网。

最新资讯
半数千禧一代爱旅游胜过房产Airbnb下沉市场增长迅猛

半数千禧一代爱旅游胜

彭韬表示,爱彼迎自去年开始大举布局下沉市场,2019年第三
是真的吗?比“剪刀手”拍照会泄露指纹

是真的吗?比“剪刀手”

有专家表示,这一说法是“伪安全?#25293;睢保?#29702;论上是?#34892;?#38706;指
共享经济盈利之道应?#30475;?#26032;而非涨价

共享经济盈利之道应靠

迄今为止,除了颜色五花八门之外,各共享单车平台仍无能力
谷歌收集面部数据:隐私成科技企业新原罪?

谷歌收集面部数据:隐私

或许?#28216;?#26377;过任何一个历史时期如今天,如此多数的用户、
郭台铭:决定不参与明年的台湾地区领导人选举

郭台铭:决定不参与明年

郭台铭对支持者表示?#34892;?#24182;表示,不参与选举,不表示放弃参
周杰伦推新单曲《说好不哭》 QQ音乐服务器崩溃

周杰伦推新单曲《说好

今日23点,?#22791;?#35768;久未发新歌的周杰伦发布最新单曲《说好
最新文章
将Perl5代码迁移到Perl6上的解决方案

将Perl5代码迁移到Per

今天小编就为大家分享一篇关于将Perl5代码迁移到Perl6
Perl 批量添加Copyright版权信息

Perl 批量添加Copyrig

对所有输入文件,如果没有版权信息则加上版权信息,否则什
Perl字符串处理函数大全

Perl字符串处理函数大

本文重点讨论Perl字符串处理函数的用法,每种函数都有
Perl中常见符号与操作

Perl中常见符号与操作

这篇文章主要介绍了Perl中常见符号与操作,需要的朋友
Perl学习教程之单行命令详解

Perl学习教程之单行命

这篇文章主要给大家介绍了关于Perl学习教程之单行命令
使用Perl生成随机密码

使用Perl生成随机密码

本文给大家分享的是使用perl生成随机密码的方法示例,而
幸运蛋蛋pc开奖 北京通app好用吗 甘肃十一选五前三直 福彩3d精华布衣1 星网彩票广东36选7 爱彩乐四川快乐12遗漏查询 二八杠生死门 中国福彩票广东26选5预测 正版资料第三份已更新 重庆时时彩稳赚方法如下 福建22选5走势图大星彩票网