前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Javascript[0x01] -- 数组(一)

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

作者头像
江涛学编程
发布2020-06-19 16:30:00
7350
发布2020-06-19 16:30:00
举报
文章被收录于专栏:江涛的博客江涛的博客

相比于其他语言的数组,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:

代码语言:javascript
复制
// 也没看见过三维之外的存在啊,这里就三维吧
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()也是转换成字符串,但是如果是数字的话,它会以“,”帮你标好千分位

代码语言:javascript
复制
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、创建数组的方式
代码语言:javascript
复制
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()

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 江涛学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、有关数组的相关API
    • 1.1、数组方法
      • 1.2、ES6和ES7新加的
      • 二、问题思考
        • 2.1、Javascript中支持二维数组和多维数组吗? 如果不支持请封装一个函数实现支持
          • 2.2、toString()和toLocalelString()的区别
            • 2.3、创建数组的方式
              • 2.4、哪些数组方法会改变原数组?
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档