Array.of()
方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型
参数:任意个参数,将按顺序成为返回数组中的元素。参数为空就是返回一个空数组
console.log(Array.of(4, 7, 9)); // (3) [4, 7, 9]
返回值就是一个将参数按照顺序组成的一个数组
使用此方法可以创建一个新数组,这个方法主要就是为了弥补构造函数的不足,当使用构造函数创建一个数组只有一个元素6时:
console.log(new Array(6)); // (6) [empty × 6]
只创建了六个元素为空的数组,长度,不符合预期,而使用Array.of()方法就不会出现这种情况
该方法是es6的方法,IE低版本不兼容,可以使用slice进行兼容
if (!Array.of) {
Array.of = function() {
return Array.prototype.slice.call(arguments);
};
}
Array.from()
方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例
语法
Array.from(arrayLike[, mapFn[, thisArg]])
参数:
arrayLike:要转化成数组的伪数组或者可迭代的对象
mapFn:可选,函数,若指定了该函数,那么arrayLike中的每一个元素都会执行一遍该函数
thisArg:可选;指定mapFn中的this
类数组和可迭代的对象
- 类数组:拥有一个 length 属性(Number类型)和若干索引属性的任意对象。比如说arguments,string,类似document.getElementsByClassName() 的返回结果,文件对象FileList
- 可迭代对象(可以获取对象中的元素,如 Map和 Set 等)
一个参数
function test(){
console.log(Array.from(arguments)); // (4) ["23", 647, true, {…}]
console.log(arguments); // Arguments(4) ["23", 647, true, {…}, callee: ƒ, Symbol(Symbol.iterator): ƒ]
}
test('23', 647, true, {name: "zhansan"})
传入回调函数
function test() {
console.log(
Array.from(arguments, function(item, index){
console.log(item); // 参数item就是数组的每一个成员,index就是成员的下标
console.log(this); // 全局调用函数,this指向window
return item + 1
}) // (5) [2, 3, 4, 5, 6], 实现每一个元素加一
);
}
test(1, 2, 3, 4, 5)
Array.isArray()
同于判断一个对象是否是一个数组,IE9一下不支持
参数:要判断的对象
返回值:布尔值:如果是数组返回true,反之false
console.log(Array.isArray([1, 4, 6])); // true
console.log(Array.isArray({a: 2, b: 7})); // false
function test(){
console.log(Array.isArray(arguments)); // false
}
test()
如果不存在该方法可以
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
网友评论