js 对Array的补充

Array.form的用法

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是对原数组的过滤

时间: 2025-01-13 16:09:17

js 对Array的补充的相关文章

JS中Array数组的三大属性用法

Array数组主要有3大属性,它们分别是length属性.prototype属性和constructor属性. JS操作Array数组的方法及属性 本文总结了Array数组的3个属性,length属性.prototype属性.constructor属性使用,并附注Array数组对象的8个分类及多个方法使用,具体如下: 对象的3个属性 1.length属性 length属性 Length属性表示数组的长度,即其中元素的个数.因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-

JavaScript基础18——js的Array对象

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js的Array对象</title> 6 <script type="text/javascript"> 7 var arr = [1,2,3,4,5]; 8 document.write("数组:" + arr); 9 //

js 数据类型 Array,Object,RegExp

一.Array类型 js 中 Array 数据类型非常强大,非常灵活 1.对于一个数组,它的每一项都可以是不同的数据类型 2.数组长度并不是一个固定的值,它是可以随时变化的 3.它可以用来模拟数据结构中的 "队列" 和 "栈",操作起来十分方便 构造: var arr = new Array(); var arr = []; var arr = new Array(1,2,3,4); console.log(arr);// [1, 2, 3, 4] var arr

JS 数组Array排序

function mySort() { var tags = new Array(); //使用数组作为参数存储容器 //请补充你的代码 for (var i = 0; i < arguments.length; i++) { tags.push(arguments[i]); } tags.sort(function (a, b) { return b - a; }); return tags; //返回已经排序的数组}var result = this.mySort(50, 11, 16, 3

使用jQuery.makeArray() 将多种类型转换成JS原生Array

jQuery.makeArray(obj)这个函数从名字上来看很容易猜出它的用途:应该是用来将传入的对象转换成一个原生array 再看看官网上对它的解释:Convert an array-like object into a true JavaScript array.(将一个类似数组对象转换为JS原生的数组) 那么怎么样的object才可以称为"array-like object"呢?这个问题不急着回答,相信看完文章你会明白的,先看看下面的实验 将HTMLCollection转换成原

【转】 js数组 Array 交集 并集 差集 去重

原文:http://blog.csdn.net/ma_jiang/article/details/52672762 最劲项目需要用到js数组去重和交集的一些运算,我的数组元素个数可能到达1000以上,网上的实现方式都是2次循环,性能不适合我的需求,1000*1000那次数太多了,所以我这里采用对象object来做处理,用空间换时间,code 如下: ///集合取交集 Array.intersect = function () { var result = new Array(); var obj

兼容低版本JS的Array.map方法

前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽.后面回来查了下资料发现.Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的. 看如下兼容性实现方式: 实现思路:1,先验证this对象,再将this用Object封装成obj. 2,获取封装后的obj的属性长度 3,验证是否有回调方法 4,根据obj的属性长度lengh生成新的数组,new Array(length). 5,遍历obj对象,获取mapKey,mapValue,

js的Array数组传到后台的方法

页面代码 var array = new Array(); ......//array.push();   赋值 $.ajax({ url:url, async:true, data: { array: array, test : 'test' },success : function (result){ } }); 后台Mybatis直接接收即可 @RequestMapping(value="/XXX") @ResponseBody public void updateByClust

原生JS:Array对象详解

Array对象 创建数组: 数组字面量:var arr1 = [1,2,3]; Array构造函数1:var arr2 = new Array(1,2,3);  //[1,2,3] Array构造函数2:var arr3 = new Array(3);  var arr3 = new Array(‘3’);  var arr3 = new Array('ol'); 错误写法:var arr3 = new Array(3.2);  var arr3 = new Array(-3); 例:var a