javascript 常见工具函数(一)

news2025/4/7 3:42:49

1.将JSON数据根据相同值,进行归类划分:

var arr = [{ time: "1", img: "22222" }, { time: "2", img: "555" }, { time: "1", img: "888888" }, { time: "2", img: "4444" }];
/**
* @param arr 需要归类的数组包含json数据
* @param same 依据哪一个key进行归类
* @param classify 进行归类的数据key隔天
*/
_proto.jeff = function (arr,same,classify) {
    var sameKey = same;
    var classifyKey = classify;
    var l = arr.length;
    var i, j, vJson = { sameKey: "", classifyKey:[]},vArr = [];
    for (i = 0; i < l; i++) {
        if (!arr[i]) break;
        vJson.sameKey = arr[i].sameKey;
        vJson.classifyKey.push(arr[i].classifyKey);
        for (j = i + 1; j < l - 1; j++) {
            if (!arr[j]) break;
            if (arr[j].sameKey != vJson.sameKey) continue;
            if (!vJson.classifyKey.contains(arr[j].classifyKey)) vJson.classifyKey.push(arr[j].classifyKey);
            arr.removeAt(j);
        }
        vArr.push(vJson);
        vJson = { sameKey: "", classifyKey:[]};
    }
    return vArr;
}

2.比较一个数值,是否在数组元素包含的范围内:

for (var i=0; i < weightsRange.length; i++) {
    for (var j = i + 1; j < weightsRange.length; j++) {
        console.log("j循环开始时候的后的空格数"+this.blankNum);
        if(blankWeight<=weightsRange[i]){
            this.blankNum = i+1;
        }else if(blankWeight<weightsRange[j]){  //原来这样写会出错 weightsRange[i]<blankWeight<weightsRange[j],因为这样的话,当大于                                                  //weightsRange[i]的时候就会进入else if的内部而忽略的  小于weightsRange[j]的情况
            this.blankNum = j+1; 
        }
        break;
    }
        console.log("j循环结束后的空格数"+this.blankNum);
        if(this.blankNum!=0)break;
}

3.数组排序:

(1)使用方法:

dropTimes.sort(function (a, b) {
    return a - b;
})

(2)函数说明:

4.删除数值中指定位置的元素:

(1)使用方法:

this.tempTimes.splice(rd, 1); //删除数值中的rd位置上的元素,该方法会改变原始数组,返回新的数组

(2)函数说明:

5.截取指定位置的字符串:

(1)使用方法:

this.phone = this.phone.substr(0, this.phone.length - 1);

6.检测字符串是否匹配某个模式:正则表达式的应用

(1)使用方法:

/*验证手机号码*/
_proto.checkMobile = function (e) {
    var num = this.phone;
    var re = /^1\d{10}$/;   //手机号码的正则表达式
    if (re.test(num)) {
        this.getCode();
        this.cdTime = 60;
        this.mainUI.label_cd.text = this.cdTime + "s";
        this.mainUI.btn_gray.visible = true;
        this.mainUI.btn_getCode.visible = false;
        Laya.timer.loop(1000, this, this.cutdown);
    } else {
        this.mainUI.img_errorPhone.visible = true;
    }
    this.mainUI.box_keyboard.visible = false;
}

(2)函数说明:

7.判断当前窗口的URL链接中是否包含某字符串:

G.ISTEST = window.location.href.indexOf("web_test"); //是否连接测试版本服务器

if (G.ISTEST > 0) {   //是测试服
    G.PIC_URL = "http://icbc.hwugame.com/icbcserver_test/upload/";
    G.GAMESERVER_POST_URL = "http://icbc.hwugame.com/icbcserver_test/protocol";
    G.WXSERVER_POST_URL = "http://icbc.hwugame.com/icbclogin_test/protocol";
} else {
    G.PIC_URL = "http://icbc.hwugame.com/icbcserver/upload/";
    G.WXSERVER_POST_URL = "http://icbc.hwugame.com/icbclogin/protocol";
    G.GAMESERVER_POST_URL = "http://icbc.hwugame.com/icbcserver/protocol";
}

8.js函数:字符串转换浮点型数值,并且保留指定的位数:

var s='29.3231565';
s=parseFloat(s).toFixed(1);  //这里是保留小数点后一位小数

9.js做冒泡排序:

if(vDatas){
    var l = vDatas.length;
    var i,j;
    var a, b;
    for(i = 0; i < l; i++){//排序
        for(j = i + 1; j < l; j++){
            a = vDatas[i];
            b = vDatas[j];
            a.p = a.owner.getMoveProgress();
            b.p = b.owner.getMoveProgress();
            if(a.p < b.p){//排名发生改变!
                b.rank = i + 1;
                a.rank = j + 1;
                vDatas[i] = b;
                vDatas[j] = a;
                isChange = true;
            }else{
                a.rank = i + 1;
                b.rank = j + 1;
            }
        }
    }
}

10.找出数组中,map中某个key的值最大的元素:

/**
* 获取击杀最多的玩家id
*/
_proto.getKillChampion = function(newlist){
    var killChampionId;
    var list = newlist.clone();
    var vPlayer1,vPlayer2;
    for(var i=0;i<list.length;i++){
        vPlayer1 = list[i];
        for(var y=i+1;y<list.length;y++){
            vPlayer2 = list[y];
            if(vPlayer1.killNum>vPlayer2.killNum){
                killChampionId = vPlayer1.id;
                list[y] = vPlayer1;
            }else{
                killChampionId = vPlayer2.id;
                vPlayer1 = vPlayer2;
            }
        }
    }
    return killChampionId;
}

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

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

相关文章

D50|单调栈

739.每日温度 初始思路&#xff1a; 暴力解法但是会超时。 class Solution {public int[] dailyTemperatures(int[] temperatures) {int[] answer new int[temperatures.length];for(int i 0;i<temperatures.length;i){for(int j i;j<temperatures.length;j){if(te…

NeRF-RPN: A general framework for object detection in NeRFs 全文翻译

摘要 Abstract 本文提出了第一个重要的物体检测框架 NeRF-RPN&#xff0c;它直接在 NeRF 上运行。给定一个预先训练好的 NeRF 模型&#xff0c;NeRF-RPN 的目标是检测场景中所有物体的边界框。通过利用包含多尺度三维神经体积特征的新颖体素表示法&#xff0c;我们证明…

双击shutdown.bat关闭Tomcat报错:未设置关闭端口~

你们好&#xff0c;我是金金金。 场景 当我startup.bat启动tomcat之后&#xff0c;然后双击shutdown.bat关闭&#xff0c;结果报错了~ 排查 看报错信息很明显了&#xff0c;未配置关闭端口&#xff0c;突然想起来了我在安装的时候都选的是默认的配置&#xff0c;我还记得有这…

深度学习课程实验二深层神经网络搭建及优化

一、 实验目的 1、学会训练和搭建深层神经网络&#xff1b; 2、掌握超参数调试正则化及优化。 二、 实验步骤 初始化 1、导入所需要的库 2、搭建神经网络模型 3、零初始化 4、随机初始化 5、He初始化 6、总结三种不同类型的初始化 正则化 1、导入所需要的库 2、使用非正则化…

k8s中的容器探针

pod的容器健康检查---探针 probe&#xff1a;k8s对容器执行的定期检查&#xff0c;诊断。 探针的三种规则 所有的探针都是针对容器不是针对pod 1、 存活探针---livenessProbe&#xff1a;探测容器是否正常运行。如果发现探测失败&#xff0c;会杀掉容器。容器会根据重启策略…

Python从入门到网络爬虫(面向对象详解)

前言 Python从设计之初就已经是一门面向对象的语言&#xff0c;正因为如此&#xff0c;在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言&#xff0c;那你可能需要先了解一些面向对象语言的一些基本…

【Java集合类篇】HashMap的数据结构是怎样的?

HashMap的数据结构是怎样的? ✔️HashMap的数据结构✔️ 数组✔️ 链表 ✔️HashMap的数据结构 在Java中&#xff0c;保存数据有两种比较简单的数据结构: 数组和链表&#xff08;或红黑树&#xff09;。 HashMap是 Java 中常用的数据结构&#xff0c;它实现了 Map 接口。Has…

Jupyter Notbook+cpolar内网穿透实现公共互联网访问使用数据分析工作

​​ 文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 ​​​​ 1.前言 在数据分析工作中&#xff0c;使用最多的无疑就是各…

水稻潜在产量估算解决方案

1.背景与技术路线 统计资料表明&#xff0c;尽管我国粮食单产已由 50 年代初期的 1.2t/ha 增加到如今的 5.2t/h&#xff0c;粮食产量增加了 4 倍&#xff0c;但我国人口的增长速度与气候变化导致的农业生产的不确定性&#xff0c; 在水稻收获指数保持稳定的情况下&#xff0c;…

软件测试方法分类-按测试对象划分

接上一篇,下来我们再细讲,第四个维度的分类, 软件测试方法分类-按测试对象划分 本章节重点介绍非功能测试的相关知识,因为功能测试的基本在之前的分类都是有涉及的。 一、非功能测试 1,性能测试(Performance Testing) 检查系统是否满足需求规格说明书中规定的性能。 …

Mysql事务transaction简介

文章目录 什么是事务针对Mysql隔离级别读未提交读提交可重复读串行化 mysql中的数据结构索引数据结构mysql中的锁种类**共享锁和独占锁**表锁、行锁(记录锁、间隙锁、临键锁) spring中的事务事务特性 什么是事务 事务是一个不可分割的数据库操作序列&#xff0c;也是数据库并发…

从0到1入门C++编程——03 内存分区、引用、函数高级应用

文章目录 一、内存分区二、引用三、函数的高级应用1.默认参数2.占位参数3.函数重载 一、内存分区 C程序在执行时&#xff0c;会将内存大致分为4个区&#xff0c;分别是代码区、全局区、栈区和堆区。 代码区用来存放函数体和二进制代码&#xff0c;由操作系统进行管理。 全局区…

力扣刷题-二叉树-二叉搜索树中的搜索

700 二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 NULL。 例如&#xff0c; 在上述示例中&#xff0c;如果要找的值是 5&#x…

迟来的扫雷游戏

今天我们讲如何用C语言编写出一个简单扫雷&#xff0c;扫雷也算是一个比较原始的游戏了吧&#xff0c;那么我们今天就来实现他&#xff01; 首先我们要来缕一缕游戏框架 我们在代码中我们肯定会写许多函数来实现扫雷&#xff0c;那么我们为了简便看出游戏的运行逻辑&#xff0…

字节跳动 Spark 支持万卡模型推理实践

摘要&#xff1a;本文整理自字节跳动基础架构工程师刘畅和字节跳动机器学习系统工程师张永强在本次 CommunityOverCode Asia 2023 中的《字节跳动 Spark 支持万卡模型推理实践》主题演讲。 背景介绍 在云原生化的发展过程中 Kubernetes 由于其强大的生态构建能力和影响力&…

Consule安装与SpringBoot集成

Consule Consul 是由 HashiCorp 开发的一款软件工具&#xff0c;提供了一组功能&#xff0c;用于服务发现、配置管理和网络基础设施自动化。它旨在帮助组织管理现代分布式和微服务架构系统的复杂性。以下是Consul的一些关键方面和功能&#xff1a; 服务发现&#xff1a;Consul…

大数据 - Doris系列《二》- Doris安装(亲测成功版)

目录 &#x1f436;2.1 安装前准备 &#x1f959;1.设置系统最大文件打开句柄数 >启动一个程序的时候&#xff0c;打开文件的数量就是句柄数 &#x1f959;3.时钟同步 &#x1f959;4.关闭交换分区&#xff08;swap&#xff09; &#x1f436;2.2 安装FE &#x1f436…

seo分享:慎重使用蜘蛛池

其实要提高搜索引擎蜘蛛的来访次数&#xff0c;唯一的方法还是要通过网站本身的内容更新。频繁更新有质量的内容&#xff0c;才能够提高蜘蛛的来访次数。如果本身内容更新不多&#xff0c;外部引流的蜘蛛过多&#xff0c;最终发现没什么内容索引&#xff0c;蜘蛛来访的次数也会…

express+mongoDB开发入门教程之mongoose使用讲解

系列文章 node.js express框架开发入门教程 expressmongoDB开发入门教程之mongoDB安装expressmongoDB开发入门教程之mongoose使用讲解 文章目录 系列文章前言一、Mongoose是什么&#xff1f;二、Mongoose安装三、Mongoose在express项目中使用步骤一、连接mongoDB数据库步骤二、…

网络路由跟踪工具

随着企业网络需求的增长&#xff0c;组织发现监控和管理其网络基础设施变得越来越困难。网络管理员正在转向其他工具和资源&#xff0c;这些工具和资源可以使他们的工作更轻松一些&#xff0c;尤其是在故障排除方面。 目前&#xff0c;网络管理员主要使用简单、免费提供的实用…