上一篇列出了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里没有原生支持,需自行实现。
e
相关推荐
Perl 和 JavaScript(JS)都是广泛使用的编程语言,虽然它们在语法和使用场景上有显著差异,但在处理数据结构如数组和哈希(JavaScript 中称为对象)时也有一些共通之处。下面我们将详细对比分析Perl和JS在数组和...
3. **Perl语法基础**:包括变量、常量、数据类型(如标量、数组、哈希)的使用,以及字符串操作和正则表达式。 4. **流程控制**:讲解条件语句(if-else)、循环(while、for)以及分支结构(switch-case)等控制...
4. **字符串和数组操作**:Perl支持灵活的字符串操作,如连接、查找、替换等,同时也提供了数组和关联数组(哈希)的概念,用于存储和处理多个数据项。 5. **正则表达式**:Perl的正则表达式功能强大,是其一大特色...
- **Web开发**:尽管随着Python和JavaScript的发展,Perl在这方面的应用有所减少,但它仍然是一种有效的Web开发工具。 - **科学计算**:Perl可以用来处理大量数据和进行复杂的计算。 5. **获取Perl及支持:** - ...
1. **变量定义**:在Perl中,常见的变量类型包括标量(scalar)、数组(array)和哈希表(hash)。标量以`$`开头,数组以`@`开头,哈希表以`%`开头。 - 示例: ```perl $name = "John Doe"; # 标量 @colors = (...
MongoDB 的 Perl 驱动程序是与数据库进行交互的重要工具,"mongo-perl-bson" 就是这样的一个模块,它实现了 BSON 规范的 Perl 版本。这个库允许 Perl 开发者在 MongoDB 中高效地处理数据,将 Perl 数据结构转换为 ...
综上所述,这篇内容将涉及Perl编程语言中的解构赋值概念,其具体实现方式,以及可能与JavaScript解构赋值的比较。通过分析提供的压缩包文件,我们可以学习到如何在Perl中使用和实现解构赋值,这对于理解和优化Perl...
Shell语法(三种类型的引号,条件,循环,测试...) Perl :Perl语法,特殊符号和特殊变量,函数(子例程)定义以及调用,字符串,数组和哈希数组。 Perl正则表达式和文件处理。 Perl模块和CPAN。 Git :版本控制和...
变量在Perl中扮演着重要角色,包括标量、数组、哈希等数据类型,它们帮助存储和操作数据。控制结构如if-else语句、循环(for、while)以及开关(switch)用于控制程序流程。函数是代码的可重用部分,Perl提供了内置...
### JavaScript 10分钟速成 (js-in-ten-minutes) #### 概述 本指南由JavaScript专家Spencer Tipping撰写,旨在为已有一定JavaScript基础的学习者提供一个快速掌握高级特性的途径。对于那些了解其他函数式语言(如...
1. 名称/值对的集合:在各种语言中,这都是通过对象、记录、结构、字典、哈希表、键列表或关联数组的形式实现的。 2. 有序列表:在大多数语言中,这是通过数组、向量、列表或序列实现的。 JSON 中的对象: 1. 对象...
5. **函数式数据操作**:`yoda` 提供了一系列针对数组和哈希的操作函数,如 `pluck`(提取对象属性)和 `zipObj`(创建键值对数组)。这些函数使你能够以声明式的方式处理数据,而不是通过传统的循环和赋值语句。 6...
在某些编程语言中,如Perl、JavaScript和Python,都内置了正则表达式的支持。 6. 字符数组和字符串对象:理解不同编程语言中字符串和字符数组的区别和操作方式,例如C++中的std::string和字符数组,Java中的String...
JSON是一个完全独立于编程语言的文本格式,但其使用了许多类似C语言家族(包括C, C++, C#, Java, JavaScript, Perl, Python等)的约定。这使得JSON成为了一种理想的数据交换语言。 JSON的基本结构建立在两种构造之...
尽管其名字来源于JavaScript,但JSON是完全语言无关的,它采用了C家族语言(如C、C++、C#、Java、JavaScript、Perl、Python等)程序员熟悉的表示方式。 JSON的核心构建块有两个: 1. 名/值对集合:在不同的语言中...