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]