相比于其他语言的数组,Javascript中的数组条条框框约束较少。
一、有关数组的相关API1.1、数组方法方法名 | 描述 |
---|
concat | 连接两个或更多数组,并返回结果 | every | 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true | filter | 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组 | forEach | 对数组中的每一项运行给定函数。这个方法没有返回值 | join | 将所有的数组元素连接成一个字符串 | indexOf | 返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1 | lastIndexOf | 返回在数组中搜索到的与给定参数相等的元素的索引里最大的值 | map | 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组 | reverse | 颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在的第一个 | slice | 传入索引值,将数组里对应索引范围内的元素作为新数组返回 | some | 对数组中的每一项运行给定函数,如果任一项返回true,则返回true | sort | 按照字母顺序对数组排序,支持传入指定排序方法的函数作为参数 | toString | 将数组作为字符串返回 | valueOf | 和toString类似,将数组作为字符串返回 |
1.2、ES6和ES7新加的方 法 | 描 述 |
---|
@@iterator | 返回一个包含数组键值对的迭代器对象,可以通过同步调用得到数组元素的键值对 | copyWithin | 复制数组中一系列元素到同一数组指定的起始位置 | entries | 返回包含数组所有键值对的@@iterator | includes | 如果数组中存在某个元素则返回true,否则返回false。ES7新增 | find | 根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素 | findIndex | 根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素在数组中的索引 | fill | 用静态值填充数组 | from | 根据已有数组创建一个新数组 | keys | 返回包含数组所有索引的@@iterator | of | 根据传入的参数创建一个新数组 | values | 返回包含数组中所有值的@@iterator |
具体的还是去看书本或者一些文档吧,这里就是简单地踩个点,那么我们直接进入到问题思考环节。 二、问题思考2.1、Javascript中支持二维数组和多维数组吗? 如果不支持请封装一个函数实现支持 JavaScript本身并不支持二位数组和多维数组,只支持一维数组。但是我们可以像叠罗汉一样,数组加数组来符合预期。 可以看下我封装的例子createMoreMaxtrix: // 也没看见过三维之外的存在啊,这里就三维吧 function createMoreMaxtrix(dim, num) { var arr = new Array(num); switch (dim) { case 1 : console.log("一维"); return arr.fill(null); break;
case 2: console.log("二维"); for(var i = 0; i < num; i++) { arr[i] = []; for(var j = 0; j < num; j++) { arr[i][j] = null; } } return arr; break;
case 3: console.log("三维"); for(var i = 0; i < num; i++) { arr[i] = []; for(var j = 0; j < num; j ++) { arr[i][j] = []; for(var k = 0; k < num; k++) { arr[i][j][k] = null; } } } return arr; break; } }
var arr = createMoreMaxtrix(3, 10); console.log(arr); 2.2、toString()和toLocalelString()的区别 toString()就是把数组转换成字符串,toLocaleString()也是转换成字符串,但是如果是数字的话,它会以“,”帮你标好千分位 var fibonacci = []; fibonacci[0] = fibonacci[1] = 1; for(var i = 2; i < 50; i++) { fibonacci[i] = fibonacci[i-1] + fibonacci[i - 2]; } console.log(fibonacci.toLocaleString()); console.log(fibonacci.toString()); 这里依稀记得,用C++写的时候,王跃学长不忘提醒我,int、long int和float的区别 ,斐波那契数列关于精度丢失的问题。 2.3、创建数组的方式var arr1 = [];
var arr2 = new Array()
var arr3 = new Array(7)
var arr4 = [1, 2, 3];
var arr5 = new Array(1, 2, 3) 2.4、哪些数组方法会改变原数组?splice()、reverse()、fill()、copyWithin()、sort()、push()、pop()、unshift()、shift()
|