js 对Array的补充
2016-03-14 15:05
330 查看
Array.form的用法
1.可以将各种值转为真正的数组,并且还提供
2.另一个应用是,将字符串转为数组,然后返回字符串的长度。因为它能正确处理各种Unicode字符,可以避免JavaScript将大于
Array.of()
这个方法的主要目的,是弥补数组构造函数
数组推导
提供简洁写法,允许直接通过现有数组生成新数组。这项功能本来是要放入ES6的,但是TC39委员会想继续完善这项功能,让其支持所有数据结构(内部调用iterator对象),不像现在只支持数组,所以就把它推迟到了ES7。Babel转码器已经支持这个功能
上面代码表示,通过
注意,数组推导中,
上面代码表明,
map 和filter的区别:
map是对原数组的加工,filter是对原数组的过滤
1.可以将各种值转为真正的数组,并且还提供
map功能。这实际上意味着,只要有一个原始的数据结构,你就可以先对它的值进行处理,然后转成规范的数组结构,进而就可以使用数量众多的数组方法。
2.另一个应用是,将字符串转为数组,然后返回字符串的长度。因为它能正确处理各种Unicode字符,可以避免JavaScript将大于
\uFFFF的Unicode字符,算作两个字符的bug。
<!DOCTYPE html> <html> <head> </head> <body> <p id="h01"></p> <script> 'use strict'; //便利NodeList数组 let ps = document.querySelectorAll('p'); console.log(ps); Array.from(ps).forEach( function(p) { console.log(p); }); //装换成数组 console.log(Array.from("hello")); //本来的数组,返回原来的 let array0 = ["d","f","g"]; console.log(Array.from(array0)); //按照一定的规则改变数组内的值 console.log(Array.from([1,3,5]).map(x => x * x * x)); console.log(Array.from([1,,4,6,,0],(n => n || 0))); //自定义改变数组内的值 function typesOf () { return Array.from(arguments,value => typeof(value)) ; } console.log(typesOf(null,[],NaN)); </script> </body> </html>
Array.of()
Array.of方法用于将一组值,转换为数组
这个方法的主要目的,是弥补数组构造函数
Array()的不足。因为参数个数的不同,会导致
Array()的行为有差异。
Array.of基本上可以用来替代
Array()或
new Array(),并且不存在由于参数不同而导致的重载。它的行为非常统一。
Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组。
Array() // [] Array(3) // [, , ,] Array(3, 11, 8) // [3, 11, 8]
Array.of() // [] Array.of(undefined) // [undefined] Array.of(1) // [1] Array.of(1, 2) // [1, 2]
Array.of方法可以用下面的代码模拟实现。
function ArrayOf(){ return [].slice.call(arguments); }
数组推导
提供简洁写法,允许直接通过现有数组生成新数组。这项功能本来是要放入ES6的,但是TC39委员会想继续完善这项功能,让其支持所有数据结构(内部调用iterator对象),不像现在只支持数组,所以就把它推迟到了ES7。Babel转码器已经支持这个功能
var a1 = [1, 2, 3, 4]; var a2 = [for (i of a1) i * 2]; a2 // [2, 4, 6, 8]
上面代码表示,通过
for...of结构,数组
a2直接在
a1的基础上生成。
注意,数组推导中,
for...of结构总是写在最前面,返回的表达式写在最后面。
for...of后面还可以附加
if语句,用来设定循环的限制条件。
var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ]; [for (year of years) if (year > 2000) year]; // [ 2006, 2010, 2014 ] [for (year of years) if (year > 2000) if(year < 2010) year]; // [ 2006] [for (year of years) if (year > 2000 && year < 2010) year]; // [ 2006]
上面代码表明,
if语句要写在
for...of与返回的表达式之间,而且可以多个
if语句连用。
map 和filter的区别:
map是对原数组的加工,filter是对原数组的过滤
相关文章推荐
- JSP EL
- js判断当前环境是否为苹果手机
- js中instanceof与typeof的区别以及instanceof的门道
- 【SSH (七) 】使用ajax + json 交互
- JavaScript对象数组表格处理加案例
- JSP标准标签
- JavaScript学习笔记——基本包装类型(上)Boolean、Number
- javascript的date()和getTime()区别
- 《JavaScript高级程序设计》第7章 函数表达式
- JS正则表达式匹配<div><style>标签
- js函数对象
- 在JavaScript中创建命名空间的几种写法
- (三)ExtJs小例子之:带有输入框的提示框(prompt)
- 【JavaScript】(8)——实例:图片切换效果
- JavaScript设计模式 Item8 --外观模式Facade
- javascript window.name是什么?
- JavaScript实现360度全景图片展示效果
- js日期格式化
- JavaScript生成八位随机数(含数字、字母、特殊符号)
- IE8以下的attachEvent()和其他浏览器的addEventListener()区别