自己写的Js有序的Map, 并且支持Key为对象

var  map  =  newMap();

map.put({name:"张三"}, 23);

map.put("李四", 24);

map.get({name:"张三"});

map.remove({name:"张三"});

map.put("张三", 23);

var  objArray  =  map.allList("name", "age");// [{name: "李四", age: 24}, {name: "张三", age: 23}]

map.values(); // [24, 23]

map.keys();// ["李四", "张三"]

map.has({name:"张三"});// false

map.size();// 2

var  obj  =  map.all(); // {"李四": 24, "张三": 23}

map.clear();

map.size();// 0

map.getIndex({name: "张三"}); // -1

        // 创建一个Mapfunction newMap() {var objectMap = new Object();objectMap.mapArray = [];objectMap.sortIndexArray = [];objectMap.getKeyStr = function(key) {var nKey = key;if (typeof key === 'object') {var obj = this.getBuiderObjectSort(key);nKey = JSON.stringify(obj);}return nKey;}objectMap.getBuiderObjectSort = function(obj) {var obj1 = new Object();var keys = Object.keys(obj);keys.sort();for(var i = 0 ; i < keys.length; i++) {var key = keys[i];obj1[key] = obj[key];}return obj1;}objectMap.getIndex = function(key) {var index = this.sortIndexArray.indexOf(this.getKeyStr(key));return index;}objectMap.remove = function(key) {var index = this.getIndex(key);if (index != -1) {this.sortIndexArray.splice(index, 1);this.mapArray.splice(index, 1);}}objectMap.clear = function() {this.mapArray = [];this.sortIndexArray = [];}objectMap.keys = function() {var arry1 = [];var self = this.sortIndexArray;for(var i = 0 ; i < self.length ; i++) {try{var obj = JSON.parse(self[i]);arry1.push(obj);}catch(e) {arry1.push(self[i]);}}return arry1;}objectMap.values = function() {var arry1 = [];var self = this.mapArray;for(var i = 0 ; i < self.length ; i++) {arry1.push(self[i].value);}return arry1;}objectMap.allList = function(keyName, valueName) {var arry1 = [];var keyN = keyName == undefined || keyName == null || keyName == '' ? 'key' : keyName;var valueN = valueName == undefined || valueName == null || valueName == '' ? 'value' : valueName;var self = this.mapArray;for(var i = 0 ; i < self.length ; i++) {try {var obj = JSON.parse(self[i].key);var object = {};object[keyN] = obj;object[valueN] = self[i].value;arry1.push(object);} catch (e) {var object = {};object[keyN] = self[i].key;object[valueN] = self[i].value;arry1.push(object);}}return arry1;}objectMap.all = function() {var obj1 = new Object();var self = this.mapArray;for(var i = 0 ; i < self.length ; i++) {var key = self[i].key;obj1[key] = self[i].value;}return obj1;}objectMap.size = function() {return this.mapArray.length;}objectMap.put = function(key, value) {var nKey = this.getKeyStr(key);var index = this.getIndex(key);if (index != -1) {this.mapArray[index].value = value;}else{this.mapArray.push({key: nKey, value: value});this.sortIndexArray.push(nKey);}}objectMap.get = function(key) {var index = this.getIndex(key);if (index != -1) {return this.mapArray[index].value;}return null;}objectMap.has = function(key) {var index = this.getIndex(key);return index != -1;}return objectMap;} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux find 与cp 配合使用

cp与find配合使用 一、用自带的-exec参数 find ab -iname "ef" -type f -exec cp {} tmp \;-type f 文件 d 目录 可执行文件 -type f -executable {} 是查找结果 后面空格\; 结束 有点不太好用 但后面还可以 加命令 分号隔开 $find ab -name "ef" -…

SQLServer性能分析

目录 1 常用系统存储过程2 查看执行计划3 查看磁盘使用率&#xff08;STATISTICS IO&#xff09;4 查询时间耗时较长的语句5 死锁处理参考资料 1 常用系统存储过程 1.1 查询表结构 EXEC sp_columns your_table, column_name table_column1.2 查询表索引 EXEC sp_helpindex …

平时的一些思考内容

文章目录 阶乘位运算求概率 阶乘 阶乘是一很迷人的&#xff0c;刚开始的的变化还不是很大&#xff0c;到后面变化类似于直线上升的&#xff0c;不知道现实中哪些实例来表示阶乘。19的阶乘就已经超过了long了&#xff0c;在竞赛或者其他中要求2023或者很大数字的阶乘就需要考虑…

还在用Jekins?快来试试这款比Jekins简而轻的自动部署软件!

大家好&#xff0c;我是 Java陈序员。 在工作中&#xff0c;你是否遇到过团队中没有专业的运维&#xff0c;开发还要做运维的活&#xff0c;需要自己手动构建、部署项目&#xff1f; 不同的项目还有不同的部署命令&#xff0c;需要使用 SSH 工具连接远程服务器和使用 FTP 文件…

开源大语言模型简记

文章目录 开源大模型LlamaChinese-LLaMA-AlpacaLlama2-ChineseLinlyYaYiChatGLMtransformersGPT-3(未完全开源)BERTT5QwenBELLEMossBaichuan其他

web前端之JavaScript

MENU JavaScript之设计模式、单例、代理、装饰者、中介者、观察者、发布订阅、策略JavaScript之数组静态方法的实现、reduce、forEach、map、push、every JavaScript之设计模式、单例、代理、装饰者、中介者、观察者、发布订阅、策略 单例模式 概念 保证一个类仅有一个实例&am…

C基础使用

return 0; 语句用于表示退出程序。 一个程序有且只能有一个main函数的存在 安装编译环境&#xff1a; 安装vim: ubuntu里vim编辑器使用方法_ubuntu vim-CSDN博客 编译与运行&#xff1a; gcc hello.c //编译源文件 ./a.out //运行…

SpringBoot 项目中常用的注解

每一层对应每个包&#xff0c;包名中应全为小写。 一、Common 层&#xff08;实体类&#xff09; 前提&#xff1a;导入 Lombok 依赖 Data&#xff1a;生成 get 和 set 方法以及 toString 方法 Getter&#xff1a;只生成 get 方法&#xff0c;避免对类中的成员变量修改。 …

vmware虚拟机中Nat、桥接模式和仅主机的差别

NAT 在NAT模式下&#xff0c;主机3是Kali和Win两个操作系统的宿主机&#xff0c;那么Kali和Win可以连接到外网&#xff0c;也可以和主机3进行互联&#xff0c;但是主机1和主机2不能连接到Kali和Win。 桥接 在桥接模式下&#xff0c;主机3是Kali和Win两个操作系统的宿主机&…

对于智能设备的一些设想1

最近发现脑子里经常会出现一些能够偷懒的想法&#xff0c;希望这些点子能一点点保存下来&#xff0c;希望有需要的人拿走点子&#xff0c;不用谢 1.泡脚桶 2023年12月28日 近两年泡脚桶的风着实很大&#xff0c;我差点也就入坑了&#xff0c;于是有了一种设想&#xff0c;为什么…

elasticsearch系列六:索引重建

概述 我们再起初创建索引的时候由于数据量、业务增长量都并不大&#xff0c;常常不需要搞那么多分片或者说某些字段的类型随着业务的变化&#xff0c;已经不太满足未来需求了&#xff0c;再或者由于集群上面索引分布不均匀导致节点直接容量差异较大等等这些情况&#xff0c;此时…

ssm基于Java的小区物业管理系统论文

基于Java的小区物业管理系统 摘 要 进入21世纪网络和计算机得到了飞速发展&#xff0c;并和生活进行了紧密的结合。目前&#xff0c;网络的运行速度以达到了千兆&#xff0c;覆盖范围更是深入到生活中的角角落落。这就促使管理系统的发展。网上办公可以实现远程处理事务&#…

关于知识产权的分类标准以及分为哪些类型。

知识产权的分类标准主要有两种&#xff1a; 1.广义与狭义的分类&#xff1a; 广义的知识产权包括著作权、邻接权、商标权、商业秘密权、产地标记权、专利权、集成电路布图设计权等各种权利。目前已被《成立世界知识产权组织公约》和《与贸易有关的知识产权协议》&#xff08;…

【MySQL】数据库并发控制:悲观锁与乐观锁的深入解析

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 悲观锁&#xff08;Pessimistic Locking&#xff09;: 乐观锁&#xff08;Optimistic Locking&#xff09;: 总结&#x…

鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化

鸿蒙&#xff08;HarmonyOS 3.1&#xff09; DevEco Studio 3.1开发环境汉化 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、设置过程 打开IDE&#xff0c;在第一个菜单File 中找到Settings...菜单 在Setting...中找到Plugins…

Python面向对象高级与Python的异常、模块以及包管理

Python面向对象高级与Python的异常、模块以及包管理 一、Python中的继承 1、什么是继承 我们接下来来聊聊Python代码中的“继承”:类是用来描述现实世界中同一组事务的共有特性的抽象模型,但是类也有上下级和范围之分,比如:生物 => 动物 => 哺乳动物 => 灵长型…

彭涛:2023年终复盘,工作,团队,个人!

眨眼2023即将结束&#xff0c;2024即将开启&#xff0c;每年这个时候&#xff0c;都会简单总结下自己这一年&#xff0c;既是对今年的一个复盘和回顾&#xff0c;也是对新一年的向往和期待。 我的2023年&#xff0c;大概分为 「个人」&#xff0c;「家庭」&#xff0c;「团队」…

C#时间戳转换

时间戳转化为时间 long oldtime1703235741; System.DateTime startTime TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); var newtimestartTime.AddMilliseconds(oldtime).ToString("yyyy-MM-dd HH:mm:ss.fff"); 时间转化为时…

大创项目推荐 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习OCR中文识别系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;…

第三节-数据链路层与MAC地址

如果数据进行封装时&#xff0c;基于E2或者802.3标准&#xff0c;此时我们称之为是一个以太网数据帧。 不同的协议栈用于定义和管理不同网络的数据转发规则。 E2和802.3作用&#xff1a;定义帧头和帧尾的格式 数据&#xff1a;对于下层的每个层级而言&#xff0c;上层所反馈…