Es6 - 数组方法

354 阅读3分钟

数组方法

Array.of(x)

将文字或者变量转换成数组。

let arr_arr = Array.of(3, 4, 5, 6)let arr1 = Array.of(arr_str) [3,4,5,6]

let arr_str1 = '[3,4,5,6]';
let arr2 = Array.of(arr_str) ['3,4,5,6']

Array.from(x)

JSON数组格式比通常的数组格式多了一个length

Array.from(x)将JSON代码转换成数组

let json = {  '0': 'kai',  '1': 'xin',  length: 2}console.log(json)

页面打印  {0: "kai", 1: "xin", length: 2}

let arr9 = Array.from(json)console.log(arr9)   

页面打印 ["kai", "xin"]

find( )

首先创建数组,然后数组调用,此时的find方法称为 find实例方法。

  • value:表示当前查找的值。
  • index:表示当前查找的数组索引。
  • arr:表示当前数组

在函数中如果找到符合条件的数组元素就进行return,并停止查找。

es5

var shuzu = [3, 5, 6, 7, 8, 9, 0, 9]
console.log(shuzu.find(function (val, index, arr) {  return val > 6}))

es6

var shuzu = [3, 5, 6, 7, 8, 9, 0, 9]
console.log(shuzu.find((val, index, arr) => val > 6))

fill( )

数组进行填充,它接收三个参数,第一个参数是填充的变量,第二个是开始填充的位置,第三个是填充到的位置。

var fill_arr = [1,3,4,5,6,7]

fill_arr.fill('kaixin',2,4) 
// 从第二个开始填充到第四个但是不包含第四个

console.log(fill_arr)  [1, 3, "kaixin", "kaixin", 6, 7]

for…of循环

同时输出数组的内容和索引,我们用entries()这个实例方法,配合我们的for…of循环就可以同时输出内容和索引了

let arr=['aa','bb','cc']
for (let [index,val] of arr.entries()){
    console.log(index+':'+val);
}

let arr=['aa','bb','cc']
for (let item of arr.entries()){
    console.log(item);
}

当数组为空时,循环不执行

entries( )

entries()实例方式生成的是Iterator形式的数组,那这种形式的好处就是可以让我们在需要时用next()手动跳转到下一个值。

var fill_arr = [1, 3, 4,]

let arr3 = fill_arr.entries()console.log(arr3)

console.log(arr3.next().value);console.log('********')

console.log(arr3.next().value);console.log('、、、、、、、、、')

console.log(arr3.next().value);console.log('========')


对象的函数解构

将json数据作为参数传入函数中,然后在函数内部进行一些处理。

形参与实参的参数名字要一一对照,否则不显示

let data_json = {  aa: '数据aa',  b: '数据bb',  c: '数据cc',}function fun_data({ a, b, d }) {  console.log(a, b, d)}fun_data(data_json)

undefined "数据bb" undefined

let data_json = {  a: '数据aa',  b: '数据bb',  c: '数据cc',}function fun_data({ a, b, d }) {  console.log(a, b, d)}fun_data(data_json)

"数据aa" "数据bb" undefined

数组结构

let  arr = [1,2,3,4]function fun(a,b,c,d){  console.log(a,b,c,d)}fun(...arr)

in 判断元素是否存在

对象

let data_json = {  aa: '数据aa',  b: '数据bb',  c: '数据cc',}

console.log('aa' in data_json)   // true

数组

使用length判断数组 不准确

var arr1 = [,,,,,]console.log(arr1.length)

in 判断

var arr2 = [,,,,,]console.log(0 in arr2)  falsevar arr3 = ['shuzu',,,,,]console.log(0 in arr2)  true

0 是数组下标

数组遍历

foreach  ( 值,下标,数组 )

let arr4 = ['a','b','f','g','h']

arr4.forEach((val,idx,arr) => console.log(val,idx,arr))

filter  ( 值,下标,数组 )

let arr5 = ['a','b','f','g','h']

arr5.filter((val,idx,arr) => console.log(val,idx,arr))

some ( 值,下标,数组 )

let arr6 = ['a','b','f','g','h']

arr6.some((val,idx,arr) => console.log(val,idx,arr))

map( 值,下标,数组 )

let arr7 = ['a','b','f','g','h']
arr7.map((val,idx,arr) => console.log(val,idx,arr))

map的替换

将数组中的所有元素替换  只在本函数中有作用,不改变原数组

let arr7 = ['a','b','f','g','h']

console.log(arr7.map(x=>'rain'))  //["rain", "rain", "rain", "rain", "rain"]

console.log(arr7) // ['a','b','f','g','h']

数组变为字符串

toString( )

let arr7 = ['a','b','f','g','h']

console.log(arr7.toString())  // a,b,f,g,h

join( )

console.log(arr7.join('|'))  // a|b|f|g|h