javascript有list类型吗?

更新日期: 2020-01-26 阅读: 3.4k 标签: 类型

JavaScript中是不原生支持List类型的,所以大家在想要使用的时候,都会去自己封装一个类,然后去实现它。

这个方法实现满足了基本的api,而且是在JS Array类型的基础上扩展的,也可以在它上面使用Array的方法,另外一大 亮点 是可以直接引用length属性获得集合的元素个数。


代码实现

//兼容IE8-,为Array原型添加indexOf方法;
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (item) {
        var index = -1;
        for (var i = 0; i < this.length; i++) {
            if (this[i] === item) {
                index = i;
                break;
            }
        }
        return index;
    }
}

//List类实现
var List = function (args) {
    var self = this;

    if (List.isArray(args)) {
        self = args;
    }
    self.constructor = List;
    //向集合追加新元素
    self.add = function (item) {
        self.push(item);
        return self;
    };
    //在指定索引处插入新元素
    self.insert = function (index, item) {
        self.splice(index, 0, item);
        return self;
    };
    //删除元素,仅删除第一个索引处的元素
    self.remove = function (item) {
        var index = self.indexOf(item);
        if (index != -1) {
            return self.splice(index, 1)[0];
        } else {
            return undefined;
        }
    };
    //删除元素,如果元素在多个索引处存在,则全部删除
    self.removeAll = function (item) {
        var result = [];
        var removeItem = undefined;
        do {
            removeItem = self.remove(item);
            if (removeItem !== undefined) {
                result.push(removeItem);
            }
        } while (removeItem !== undefined);
        return result;
    };
    //根据index删除元素
    self.removeAt = function (index) {
        if (index != -1) {
            return self.splice(index, 1)[0];
        } else {
            return undefined;
        }
    };
    //判断元素是否包含在集合中
    self.contains = function (item) {
        return self.indexOf(item) != -1;
    };
    //清空集合的所有元素
    self.clear = function () {
        return new List(self.splice(0, self.length));
    };
    self.size = function () {
        return self.length;
    };

    if (List.isArray(args)) {
        return self;
    } else if (arguments.length > 0) {
        for (var i = 0; i < arguments.length; i++) {
            self.add(arguments[i]);
        }
    }
};
List.isArray = Array.isArray || function (target) {
    return Object.prototype.toString.call(target) === "[object Array]";
};

/*下面这段代码是关键,它设定了List类的原型是Array的原型(继承关系),所以List类也同样拥有Array的特征*/
List.prototype = Array.prototype;

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/7836

相关推荐

Js如何将String转化为Int

字符串到整型的一个转换,在面试过程中或者在工作中都会频繁遇到,那么string到js怎么转换呢 ?parseInt方法在format\'00\'开头的数字时会当作2进制转10进制的方法进行转换

Typescript内置类型与自定义类型

大家用过 Typescript 都清楚,很多时候我们需要提前声明一个类型,再将类型赋予变量。例如在业务中,我们需要渲染一个表格,往往需要定义:

Js实现base64,file和blob相互转换

JavaScript实现base64,file和blob相互转换:base64转为Blob;Blob转为base64;base64转换为file;js图片转换为base64;在Java中base64和File相互转换

Js的6种基本数据类型

在JS中一共有六种数据类型 String:字符串 Number:数值 Boolean:布尔值 Null:空值 Undefined:未定义 Object:对象 ,其中String,Number,Boolean,Null,Undefined属于基本数据类型而Object属于引用数据类型

JavaScript判断字符串是否为数字类型

JavaScript中有Number.isInteger可以判断一个字符串是否为整数。不过目前JS没有内置的函数来判断一个数字是否为包含小数的数字:

TypeScript never 类型

在类型理论(数学逻辑中的一种理论)中, 底部类型 是没有值的类型。也称为零或空类型,有时用 falsum(⊥)表示。 数学理论与计算机的发展是相辅相成的,底部类型在计算机科学中也有一定的应用场景。

JS数据类型转换表

下表显示了将不同的JavaScript值转换为Number,String和Boolean的结果:注意:引号(\\\"\\\")中的值表示字符串值。在红色的值是程序员可能不希望被转换为的值。

Js的typeof返回哪些数据类型?

JavaScript中的数据类型:值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。引用数据类型:对象(Object)、数组(Array)、函数(Function)。

为你的 JavaScript 项目添加智能提示和类型检查

近在做项目代码重构,其中有一个要求是为代码添加智能提示和类型检查。智能提示,英文为 IntelliSense,能为开发者提供代码智能补全、悬浮提示、跳转定义等功能,帮助其正确并且快速完成编码。

JS中的布尔 数字 字符串

JS中所有的值都可以转换成布尔类型 使用Boolean()或者 !!(两个感叹号),JS中所有的值都可以转换成数字类型,使用Number()或+。数字类型转换场景目的只有一个,用于计算,将后台传递的数据,从字符串转换为数字并参与计算

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!