Javascript -- 数组方法学习

1、Array.from()

参考文献

这个方法比较有意思,可以将一个类似数组或可迭代对象分割,然后将值返回为一个新数组

伪数组对象(拥有一个 length 属性和若干索引属性的任意对象)

可迭代对象](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/iterable)(可以获取对象中的元素,如 Map和 Set 等)

这个方法有三个参数,第一个就是要转换成数组的伪数组或者可迭代对象,第二个参数就是相当于一个map方法,第三个参数就是map函数执行时里面的的this指向对象,有点类似bindcallapply,可以将数据和处理数据的对象方法分开

const DObj = {
  handleArr: function (x) {
    return x+'1'
  }
}
Array.from('Hello World !',function (v) { return this.handleArr(v)}, DObj)

// 打印结果
["H1", "e1", "l1", "l1", "o1", " 1", "W1", "o1", "r1", "l1", "d1", " 1", "!1"]

Tips 使用第三个参数时,map函数方法不要使用箭头函数,否则this指向不会改变,如果不涉及第三个参数,可以使用箭头函数

Map

let m = new Map()
m.set('one', 'H')
m.set('tow', 'a')
m.set('three', 'a')
const DObj = {
  handleArr: function (x) {
    return x + '1'
  }
}
newData = Array.from(m, function (v) { return this.handleArr(v)}, DObj)
console.log( newData)
// 打印结果
["one,H1", "tow,a1", "three,a1"]

Set

let m = new Set()
m.add('H')
m.add('a')
m.add('o')
const DObj = {
  handleArr: function (x) {
    return x + '1'
  }
}
newData = Array.from(m, function (v) { return this.handleArr(v)}, DObj)
console.log( newData)
// 打印结果
["H1", "a1", "o1"]

类数组对象

只要对象的key是数值,并且value不能为数字,就可以视作类数组对象,key就是索引

2、Array.isArray()

这个方法是用来检测某个数据或者变量是否是数组,如果是则返回true,否则返回false

const arr = [1,2,3,4,5];
const obj = {name: '李狗蛋'};
const str = 'Hello World';
console.log(Array.isArray(arr))
console.log(Array.isArray(str))
console.log(Array.isArray(obj))

// 打印结果
true
false
false

Tips typeof用来检测数据或变量的类型,但是只是返回个类型,并不精准,instanceof用来检测数据或者变量是否某个对象的实例,但是数组也会返回true

3、Array.of()

这个放个和Array构造函数有点类似,都可以根据里面的参数创建数组,不过不同的是:

1.of方法是把里面的每一个参数作为数组的项,如果只是一个数字参数,依旧也是一个数组的项

2.Array构造函数会把里面的每一个参数作为数组的项,如果只是一个数字参数,则会创建一个该长度的空数组

posted @ 2019-06-01 09:05  不会代码的前端  阅读(230)  评论(0编辑  收藏  举报