javaScript数据结构 01 数组

javaScript数据结构之数组

文/三和小钢炮


01 数组

数组是最简单的数据结构,几乎所有的语言都支持数组。


02 创建和初始化数组

var weeks = new Array();
var weeks = new Array(7); // 长度声明
var weeks = new Array('Sunday', 'Monday', 'Tuesday');
var weeks = []; // 推荐
var weeks = ['Sunday', 'Monday', 'Tuesday']; // 推荐

我们只推荐后面两种,在可阅读性上是最好的。

声明一个斐波那契数列

var fibonacci = [];
fibonacci[0] = 1;
fibonacci[1] = 1;
for(var i = 2; i < 20; i++) {
    fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
}

03 添加和删除元素

写个push操作

Array.prototype.myPush = function() {
    for(var i = 0; i < arguments.length; i++) {
        this[this.length] = arguments[i];
    }
};
var nums = [0, 1, 2, 3];
nums.myPush(5); // 添加操作
nums.myPush(6, 7); // 添加多个元素

再写个unshift操作

Array.prototype.myUnshift = function() {
    for(var i = 0; i < arguments.length; i++) {
        for (var j = this.length; j >= 0; j--) {
            this[j] = this[j-1];
        }
        this[0] = arguments[i];
    }
}
arr.myUnshift(0);
arr.myUnshift(2, 3);

再写个shift操作

Array.prototype.myShift= function() {
    var first = this[0];
    for(var i = 0; i < this.length; i++) {
        this[i] = this[i+1];
    }
    this.length -= 1;
    return first;
}
arr.myShift();
console.log(arr);

再写个pop操作

Array.prototype.myPop= function() {
    var last = this[this.length - 1];
    this.length -= 1;
    return last;
};

04 多维数组

javaScript只提供了一维数组,我们可以用嵌套数组模拟。

如下面操作:

var list = [];
list[0] = [1,2,3,4];
list[1] = [1,2,3,4];

还可以下面的做法:

var list = new Array(10);
for(var i = 0; i < list.length; i++) {
    list[i] = new Array(10);
}

05 数组的方法参考

无论js封装了多少方法,最终都是基础操作。

方法名描述
concat连接多个数组,返回结果
reverse颠倒数组
slice传入索引,将数组里对应索引范围内的元素作为新数组返回
indexOf返回第一个给定参数的索引,没有返回-1
lastIndexOf返回给定参数索引的最大值
filter运算数组的每一项,返回符合条件组成的数组
forEach运算数组的每一项
map运算数组的每一项,返回结果
some运算数组的每一项,如果任一项返回true,则返回true
every运算数组的每一项,每一项并返回true,则返回true
sort按指定规则排序
toString转换为字符串
join连接成字符串

例如:
写一个map方法

Array.prototype.myMap= function(fn) {
    for(var i = 0; i < this.length; i++) {
        this[i] = fn.apply(this, [this[i], i, this]);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三和小钢炮

谢谢客官~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值