属性
Array.length
length 属性表示一个无符号 32-bit 整数,返回一个数组中的元素个数。
方法
Array.from
Array.from() 方法从一个类似数组或可迭代的对象中创建一个新的数组实例。
语法
1 | Array.from(arrayLike[, mapFn[, thisArg]]) |
描述
Array.from() 允许你从下面两者来创建数组:
- 类数组对象(拥有一个 length 属性和若干索引属性的任意对象)
- 可遍历对象(你可以从它身上迭代出若干个元素的对象,比如有 Map 和 Set 等)
Array.from() 方法有一个可选参数 mapFn,让你可以在最后生成的数组上再执行一次 map 方法后再返回。也就是说 Array.from(obj, mapFn, thisArg) 就相当于 Array.from(obj).map(mapFn, thisArg), 除非创建的不是可用的中间数组。 这对一些数组的子类,如 typed arrays 来说很重要, 因为中间数组的值在调用 map() 时需要是适当的类型。
示例
1 | // Array from a String |
Array.isArray()
Array.isArray() 用于确定传递的值是否是一个 Array。
语法
1 | Array.isArray(obj); |
描述
如果对象是 Array ,则返回 true,否则为 false。
有关更多详细信息,请参阅文章以绝对精确度确定 JavaScript 对象是否为数组。
示例
1 | // 下面的函数调用都返回 true |
兼容性代码
假如不存在 Array.isArray(),则在其他代码之前运行下面的代码将创建该方法。
1 | if (!Array.isArray) { |
扩展运算符(spread)
扩展运算符(spread)是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
1 | function push(array, ...items) { |
上面代码中,array.push(…items)和 add(…numbers)这两行,都是函数的调用,它们的都使用了扩展运算符。该运算符将一个数组,变为参数序列。
Array.of()
Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
语法
1 | // 参数 |
示例
1 | Array.of(1); // [1] |
兼容旧环境
1 | if (!Array.of) { |
Array.prototype.concat()
concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
语法
1 | var new_array = old_array.concat(value1[, value2[, ...[, valueN]]]) |
描述
concat 方法并不修改调用它的对象(this 指向的对象) 和参数中的各个数组本身的值,而是将他们的每个元素拷贝一份放在组合成的新数组中.原数组中的元素有两种被拷贝的方式:
- 对象引用(非对象直接量):concat 方法会复制对象引用放到组合的新数组里,原数组和新数组中的对象引用都指向同一个实际的对象,所以,当实际的对象被修改时,两个数组也同时会被修改.
- 字符串和数字(是原始值,而不是包装原始值的 String 和 Number 对象): concat 方法会复制字符串和数字的值放到新数组里.
示例
1 | // 两个数组合并为一个新数组 |
Array.prototype.copyWithin()
copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小。
语法
1 | arr.copyWithin(target); |
描述
参数 target,start 和 end 必须为整数。
如果 start 为负,则其指定的索引位置等同于 length+start,length 为数组的长度。end 也是如此。
copyWithin 方法不要求其 this 值必须是一个数组对象;除此之外,copyWithin 是一个可变方法,它可以改变 this 对象本身,并且返回它,而不仅仅是它的拷贝。
copyWithin 就像 C 和 C++ 的 memcpy 函数一样,且它是用来移动 Array 或者 TypedArray 数据的一个高性能的方法。复制以及粘贴序列这两者是为一体的操作;即使复制和粘贴区域重叠,粘贴的序列也会有拷贝来的值。
copyWithin 函数是设计为通用的,其不要求其 this 值必须是一个数组对象。
The copyWithin 是一个可变方法,它不会改变 this 的 length,但是会改变 this 本身的内容,且需要时会创建新的属性。
例子
1 | [1, 2, 3, 4, 5].copyWithin(-2); |
Array.prototype.entries()、Array.prototype.keys()、Array.prototype.values() 遍历数组
ES6 提供三个新的方法——entries(),keys()和 values()——用于遍历数组。它们都返回一个遍历器对象(详见《Iterator》一章),可以用 for…of 循环进行遍历,唯一的区别是 keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。
- entries() 方法返回一个新的 Array Iterator 对象,该对象包含数组中每个索引的键/值对。
- keys() 方法返回一个新的 Array 迭代器,它包含数组中每个索引的键。
- values() 方法返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值。
1 | for (let index of ['a', 'b'].keys()) { |
可以通过 for…of 来循环数组
转换方法
在 javascript 中所有的对象都具有 toLocaleString()、toString()、valueOf()方法。
语法
1 | var colors = ['red', 'blue', 'green']; |
描述
如果数组中的某一项的值是 null 或者 undefined,那么该只在 join()、toLocaleString()、toString()、valueOf()方法返回的结果中以空字符串表示
重排序方法
reverse() 方法会反转数组项的顺序。 sort()方法按升序排列数组项
语法
1 | // reverse() 数组反转 |
未完待续。。。。。