分享

Javascript[0x01] -- 数组(一)

 nullPlus 2023-02-03 发布于浙江

相比于其他语言的数组,Javascript中的数组条条框框约束较少。

一、有关数组的相关API

1.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()

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多