数组方法合集

Some()方法

some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
  • 如果没有满足条件的元素,则返回false。

用法some(<function>)<function>处接一个函数,函数接收一个值,代表数组的每一个值。将这个值带入函数内,在函数内做一个条件判断。

some(i=>i>1)意思是如果检测到有一个元素大于一,就返回false

...扩展运算符

扩展运算符能将数组转换成用逗号分割的参数序列,常用于扁平数组(一次只能打开一层哦)和在将数组作为参数的时候使用,下述代码输出[1,2,3,4]

var arr = [1,2,3,4]
console.log([...arr]);

但是要注意参数序列并不是序列,下面这样写就会报错

var arr = [1,2,3,4]
console.log(...arr);

对对象这样扩展也会报错,报错信息TypeError: arr is not iterable(arr不可迭代)

var arr = {a:1,b:2}
console.log([...arr]);

但若是arguments则不会报错

function fun() {
  console.log(...arguments);
}
fun(1, 2, 3)   // 1 2 3

然后我最近新发现了一个逆向的用法,非常有意思

function fun5(...params) { 
console.log(params); // [ 1, 2, 3, 4 ] }
fun5(1, 2, 3, 4)

可以发现,我们传了一个参数序列给...params,他直接被反向转换成了一个数组

Concat()方法

此方法可以将数组拼接,话不多说,show you the code

var arr1 = [1]
var arr2 = [2]
console.log(arr1.concat(arr2));//[ 1, 2 ]

参数可以很多个

var arr1 = [1]
var arr2 = [2]
var arr3 = [3]
console.log(arr1.concat(arr2,arr3));//[ 1, 2, 3 ]

参数不一定要是数组(所以可以搭配扩展运算符使用)

var arr1 = [1]
var arr2 = [2]
var num = 3
console.log(arr1.concat(arr2,num));///[ 1, 2, 3 ]


var arr1 = [1]
var arr2 = [2,3]
console.log(arr1.concat(...arr2));//[ 1, 2, 3 ]

也可以是字符串,非常之多样化的家人们

var arr1 = [1]
var arr2 = [2]
var string = '3'
console.log(arr1.concat(arr2,string));

当上述三种方法结合在一起实现数组扁平:(学以致用一下,可以顺便考察一下自己,看能不能理解下列代码)

var arr = [1, [2, [4, [5, [6]]]]]

function myFlatten(arr) {
	while (arr.some(item => Array.isArray(item))) {
		arr = [].concat(...arr)
	}
	return arr
}
console.log(myFlatten(arr))  // [1,2,3,4,5,6]

#中的Array类提供了许多有用的方法,以下是其中的一些: 1.创建数组:可以使用静态方法CreateInstance创建数组,尤其是事先不知道数组元素类型的时候,可以这样定义数组。 2.设定和读取数组元素:可以使用SetValue方法设定数组元素的值,使用GetValue方法读取数组元素的值。 3.获取数组的长度:可以使用Length属性获取数组的长度。 4.排序数组:可以使用Sort方法数组进行排序。 5.反转数组:可以使用Reverse方法数组进行反转。 6.复制数组:可以使用Copy方法将一个数组复制到另一个数组中。 7.清空数组:可以使用Clear方法清空数组中的所有元素。 8.检索数组:可以使用IndexOf方法数组中查找指定的元素。 9.转换数组:可以使用ConvertAll方法将一个数组转换为另一个类型的数组。 下面是一个示例代码,演示了如何使用Array类的一些方法: ```csharp // 创建一个整型数组 int[] numbers = (int[])Array.CreateInstance(typeof(int), 5); // 设定数组元素的值 numbers.SetValue(1, 0); numbers.SetValue(3, 1); numbers.SetValue(5, 2); numbers.SetValue(2, 3); numbers.SetValue(4, 4); // 读取数组元素的值 Console.WriteLine("数组元素的值:"); for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers.GetValue(i)); } // 获取数组的长度 Console.WriteLine("数组的长度:" + numbers.Length); // 排序数组 Array.Sort(numbers); Console.WriteLine("排序后的数组:"); for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers.GetValue(i)); } // 反转数组 Array.Reverse(numbers); Console.WriteLine("反转后的数组:"); for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers.GetValue(i)); } // 复制数组 int[] copy = new int[5]; Array.Copy(numbers, copy, 5); Console.WriteLine("复制后的数组:"); for (int i = 0; i < copy.Length; i++) { Console.WriteLine(copy.GetValue(i)); } // 清空数组 Array.Clear(numbers, 0, 5); Console.WriteLine("清空后的数组:"); for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers.GetValue(i)); } // 检索数组 int index = Array.IndexOf(copy, 3); Console.WriteLine("元素3的索引:" + index); // 转换数组 string[] strings = Array.ConvertAll(numbers, x => x.ToString()); Console.WriteLine("转换后的数组:"); for (int i = 0; i < strings.Length; i++) { Console.WriteLine(strings.GetValue(i)); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值