Ruby Array

Array.new  #创建一个空数组

Array.new(5)  #创建一个容量为5的数组,其元素的值为nil

Array.new(5, "0")  #创建一个容量为5,值为"0"的数组

%w(字符串)  #这个字符串不带"",ruby会对字符串的内容进行分析,去掉其中的空格,剩下的元素作为一个数组返回给调用者。

to_a,hash有一个to_a方法,其返回一个有键值对组成的数组的数组

split()方法,会去掉字符串中的空格,返回数组

split(",")方法,会去掉字符串中的逗号,返回数组

在index处插入几个元素

a[2, 0] = [12, 13]  #在第三个元素后面,追加两个元素,12和13

获取多个index处的元素,组成新的数组

a.values_at(1, 2, 4)  #获取第二个,第三个,第五个元素,组成数组

获取数组元素

a[n]  #a.at(n)  #a.slice(n)

a[n..m]和a[n...m]  #a.slice(n..m),如果m的值大于数组的大小-1,那么等同于截取到最后一位

a[n, length]  #a.slice(n, length)

a.unshift(item)  将item插入到a的首部

a<<item, a.push(item)  将item插入到a的尾部

a.concat(b)  把b的元素放到a数组的尾部,a会发生变化

a + b  返回一个新的数组,a和b都不会发生变化

删除a中的nil元素

a.compact  建立一个新的数组,并返回

a.compact!  去除掉a中的nil,并返回剩余的元素组成的数组,如果没有nil元素的话,返回结果为nil

a.delete(item)  从数组a中删除item元素

a.delete_at(index)  删除a中index位置的元素

按照条件删除

a.delete_if{|i| i>3}  破坏性的

a.reject{|i| i>3}

a.reject!{|i| i>3}  破坏性的

删除指定位置的元素

a.slice!(n)

a.slice!(n..m)

a.slice!(n, m)

去除重复元素

a.uniq()

a.uniq!()  破坏性的

替换元素

a.collect!{|item| item * 2}  a中的元素会乘以2

a.collect{|item| item * 2}  a中的元素都乘以2,并返回;a不变

a.map!{|item| item * 2}  等同于a.collect!{|item| item * 2}

a.map{|item| item * 2}  等同于a.collect{|item| item * 2}

a.fill(item)  将a中的元素全部替换为item

a.fill(item, index)  将a中,index开始后面的换位item

a.fill(item, index_bgn, length)  将a中,index_bgn开始后面的length个元素替换为item

a.fill(item, start_index..end_index)  将a中,start_index到end_index之间的元素替换为item

a.flatten!  将数组中的数组元素展开,形成一个数组,破坏性的

a.flatten  将数组中的数组元素展开,形成一个数组,返回一个新数组

a = [1, [3, 4], 5]

a.flatten  #=> [1, 3, 4, 5]

a.reverse!  翻转a中的元素,a将发生变化

a.reverse  翻转a中的元素并返回数组,a不会发生变化

a.sort!  将a中的元素排序,a将发生变化

a.sort  将a中的元素排序并返回数组,a不会发生变化

集合

并集:  arr_new = arr1 | arr2

交集:  arr_new = arr1 & arr2

差集:  arr_new = arr1 - arr2

合集:  arr_new = arr1 + arr2

列表

破坏性的

a.unshif(item)

在首部追加item元素

a.push(item)  等同于a << item

在尾部追加item元素

a.pop  

去除数组最后面的元素

a.shift  

去除数组最前面的元素

a.contact(b)

把b追加到a数组中

非破坏性的

a.first

获得数组的第一个元素

a.lash

获得数组的最后一个元素

a + b

把数组b的元素和数组a的元素组成一个新数组并返回

处理数组元素

for, each, each_with_index

a = [1, [3, 4], 5]
b = a.flatten

for i in 0...b.length do
    print i+1, "th item is ", b[i],".\n"
end

print "------------------\n"

b.each{|item|
    print item, "\n"
}

print "------------------\n"

b.each_with_index{|item, i|
    print i+1, "th item is ", item,".\n"
}

如果使用完数组之后,数组就没用了

a = [1, [3, 4], 5]
b = a.flatten

while item = b.pop do
    print item, "\n"
    p b
end

Ruby支持2维数组

数组组成的数组

a = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
p a[0]        #[1, 2, 3]
p a[0][1]    #2

多维数组初始化

# WRONG
a = Array.new(3, [0, 0, 0])
a[0][2] = 3
p a
#RIGHT
a = Array.new(3){
    [0, 0, 0]
}
a[0][2] = 3
p a

zip方法

当对多个具有相同元素个数的数组,按index进行处理,并返回一个新数组时:

arr1 = [1, 2, 3]
arr2 = [10, 20, 30]
arr3 = [100, 200, 300]

i = 0
result = []

while i < arr1.length do
    result << arr1[i] + arr2[i] + arr3[i]
    i += 1
end

p result

等同于

arr1 = [1, 2, 3]
arr2 = [10, 20, 30]
arr3 = [100, 200, 300]

i = 0
result = []

arr1.zip(arr2, arr3){|a, b, c|
    result << a + b + c
}

p result

※ 带!的方法都会修改调用者,不带!的基本会返回一个新的对象

时间: 2024-11-03 21:43:16

Ruby Array的相关文章

ruby array 额

b = [2,5,6] b[1,0] = [8,9] # => [2,8,9,5,6] ( 注,在index=1 插入了[8,9] ) # b[1,0] = [8,9] ,用 [8,9] 替换b数字从下标 1 的元素开始的 0 个元素. b[4..4] = [1] # => [2,8,9,5,1] ( 注,替换从下标 4 到 4之间的元素 ) b[3...4] = [3] # => [2,8,9,3,1] (注,替换下标为 3 到下标为 4 之前的元素 )

【Ruby】范围

阅读目录 作为序列的范围 作为条件的范围 作为间隔的范围 范围(Range)无处不在:a 到 z. 0 到 9.等等.Ruby 支持范围,并允许我们以不同的方式使用范围. 作为序列的范围 范围的第一个也是最常见的用途是表达序列.序列有一个起点.一个终点和一个在序列产生连续值的方式. Ruby 使用 ''..'' 和 ''...'' 范围运算符创建这些序列.两点形式创建一个包含指定的最高值的范围,三点形式创建一个不包含指定的最高值的范围. (1..5) #==> 1, 2, 3, 4, 5 (1.

lumen框架的辅助函数

简介 Laravel 包含一些多样化的 PHP 辅助函数函数.许多在 Laravel 自身框架中使用:如果你觉得实用,也可以在你应用当中使用. 可用方法 数组 array_add array_collapse array_divide array_dot array_except array_first array_flatten array_forget array_get array_has array_only array_pluck array_pull array_set array_

calabash-android 命令行使用

本文介绍calabash-android的命令行的使用,通过例子,熟悉calabash-android所调用的ruby api和常用控制台命令, 如query, touch, wait等.,.熟悉这些API有助于我们编写自定义feature. 第一步:下载app 本文所用的测试app为黑客头条,点此下载.app中view的元素如下图所示: 第二步:打开命令行,进入app的下载目录,输入如下命令 calabash-android console HackerNews.apk 如果一切运行正常,则会

Swift快速入门(五)集合

相关文章 Swift快速入门(一)第一个Swift程序 Swift快速入门(二)基本数据类型 Swift快速入门(三)运算符 Swift快速入门(四)流程控制 前言 Swift提供了数组和字典两种集合类型来存储数据,Swift的数组用来存储顺序相同类型相同的类型,字典则采用kay-value的形式存储数据. 1.数组 数组用来存储同一个数据类型的多个数据,通常可通过数组元素的索引来访问数组元素. 声明数组 声明数组有两种语法: 使用泛型语法.格式为:Array<类型> 使用简化语法.格式为:[

php数组array_push()和array_pop()以及array_shift()函数

php数组array_push()和array_pop()以及array_shift()函数 <?php /** * array_push()将一个或多个单元压入数组的末尾(入栈) */ $stack = array("Java", "Php", "C++"); array_push($stack, "C#", "Ruby", array('jsp', 'Asp')); print_r($stack)

帮助函数

http://wiki.jikexueyuan.com/project/laravel-5.1/help-function.html 1.简介 Laravel 自带了一系列 PHP帮助函数,很多被框架自身使用,然而,如果你觉得方便的话也可以在应用中随心所欲的使用它们. 2. 数组函数 array_add() array_add 函数添加给定键值对到数组,如果给定键不存在的话: $array = array_add(['name' => 'Desk'], 'price', 100); // ['n

Ruby基础语法三 :array 和 hash

Array 1. 数组定义:有序列,可容纳任意元素, 下标由0开始 1 array = [1, 'Bob', 4.33, 'another string'] 2 puts array.first #=>1 3 p array.last #=>another string 4 p array[2] #=>4.33 2. 修改数组 1 pop, push, <<, unshift 2 array = [1, 'Bob', 4.33, 'another string'] 3 p a

ruby学习之Array

ruby中数组的大小是可以随时改变的,数组中的元素只会保存对对象的引用. 一.定义 a=Array.new() a=Array.new(5)   创建5个nil元素的数组 a=Array.new(5,1) 创建5个初始值为1的数组 a=[] a=[1,2,"a"] %w(a b c d ab)用来创建字符串数组,不过无法处理带空格的字符串 同["a","b","c","d","ab"]