js---数组,类数组

【YOLOv12改进trick】高效多尺度卷积注意力EMCAD_Block模块引入YOLOv12,实现涨点和效率提升,含创新点Python代码 EMCAD引入YOLOv12模块,实现高效多尺度注意力模块引入到YOLOv12中的快速涨点及效率提升 阅读详情

1. 数组 --- 一种特殊的对象

a 会改变原数组的API---push unshift pop shift splice sort reverse

var arr=[3,5,2,7,1,9,0,3]
//push(需要添加的参数值1,...,参数值n)---向数组末尾添加元素(可以是多个参数,就是向数组添加多个元素)
arr.push(56);console.log(arr)//[3,5,2,7,1,9,0,3,56]

//pop()---删除数组末尾的元素(传参数无效,就是剪切最后一个,因为返回值就是剪切出的结果)
arr.pop();console.log(arr);//[3,5,2,7,1,9,0,3]

//unshift(需要添加的参数值1,...,参数值n)---向数组首位添加元素(和push一样,可以传多个参数)
arr.unshift(4,3);console.log(arr);//[4,3,3,5,2,7,1,9,0,3]

//shift()---剪切掉数组首位的元素(和pop一样,传参数没用,调一次剪切一次)
arr.shift();console.log(arr)//[3,3,5,2,7,1,9,0,3]

//splice(数组的第几位开始截取,截取几位,在切口处添加新的数据)----剪切掉截取的一段字符串,并在截断的地方添加新的数据
arr.splice(1,3,22,44,55,66);console.log(arr);//[3,22,44,55,66,7,1,9,0,3]
//另外截取位数可以是0,就是不剪切,只插入,位置根据第n位开始截取,就在第n位前插入

//sort()---默认按acs码升序排序
arr.sort(); console.log(arr);//[0, 1, 22, 3, 3, 44, 55, 66, 7, 9]

//reverse()---翻转顺序
arr.reverse();console.log(arr);//[9, 7, 66, 55, 44, 3, 3, 22, 1, 0]

//例子---sort
//由于很多时候,我们并不需要根据acs码排序,所以sort提供参数便于操作
arr.sort(function(a,b){//sort里的函数必须是两个参数;返回负数,就认为a在前;正数就b在前;返回0,就不动
     //if(a<b){
     //   return -1;// a - b < 0
    //}else{
     //   return 1; // a - b > 0
    //}          
    return a-b;//升序
    return b-a;//降序
});

//sort从数组中取a和b是依照冒泡排序的方式---就是从arr中取第一位和第二位比,再和第三位比,比得过(返回正数)就交换,比不过就不动
//例子---冒泡排序
for(var i=0;i<arr.length;i++){
    for(var j=i+1;j<arr.length;j++){
        if(arr[i] > arr[j]){
            //如果当前拿来对比的值大于之后的值,就交换值,然后拿着交换后的i位置上的值继续和后面对比
            arr[j]=arr[i]+arr[j];
            arr[i]=arr[j]-arr[i];
            arr[j]=arr[j]-arr[i];
        }
    }
}
//冒泡排序原理
//当i=0的时候,是第一轮对比,将最小的数放在了第一位,每次其实就是在找当前位之后的最小的数放在当前位置
//就是拿着i位置的值去当前位置后面找比i位置的值小的数,找到就交换位置,然后拿着i位置上的新数字(比之前的数小,看看后面还有没有比它还小的,不断交换就是找最小的)。
//不交换就证明比当前数小,那就肯定比能交换的数大
例子---给你个有序数组,请你乱序排列:
var arr[1,2,3,4,5,6];
arr.sort(function(a,b){
    //随机数会产生开区间0到1
    //减0.5就是-0.5到0.5之间,就是返回可正可负的数,就随机交换或者不交换了呗
    return Math.random()-0.5;
})

b. 改变不了原数组的API---concat slice join

var arr=[1,2,3,7,5,4],arr1=[22];
//数组1.concat(数组2)---在数组1的末尾拼接上数组2
console.log(arr.concat(arr1),arr); //[1, 2, 3, 7, 5, 4, 22] [1, 2, 3, 7, 5, 4]
console.log(arr1.concat(arr),arr1);//[22, 1, 2, 3, 7, 5, 4] [22]

//slice(从第几位开始截取,截取到第几位之前的数结束)
console.log(arr.slice(1,2),arr);//[2] [1, 2, 3, 7, 5, 4]
console.log(arr.slice(3),arr); //[7,5,4] [1, 2, 3, 7, 5, 4]
//数组的这类API都是可以写负参数的,内部会转换为length+(负的参数) 然后计算出的位置
console.log(arr.slice(-2),arr);//[5,4] [1, 2, 3, 7, 5, 4]

//数组以某个东西链接
console.log(arr.join('-'),arr); //"1-2-3-7-5-4"
//字符串打断成数组
var arr3 = arr.join('-');
console.log(arr3.split('-'),arr3); //["1", "2", "3", "7", "5", "4"] "1-2-3-7-5-4"

2. 类数组:属性要为索引(数字)属性,必须有length属性。最好加上push方法。

另外:一个对象加上splice方法,就会变成数组的形式---就是从{}形式变成[],但是它依然是对象,只能算是类数组。

function a(){
   console.log(arguments);//[2,3,1]  这里的arguments就是形式看上去是[] 但是依然是对象,依然只能算类数组。你不能给它push等调用数组的API
   arguments.push(2);//error: arguments.push is not a function
}
a(2,3,1);

例子:

var obj={
  "0":"haha",
  "1":"xixi",
  "2":"hehe",
  "name":"xiaoming",
  "length":3,
  "push":Array.prototype.push
}
obj.push("heihei");
console.log(obj); // {0: "haha", 1: "xixi", 2: "hehe", 3: "heihei", name: "xiaoming", length: 4, push: ƒ}

obj.length=1;
console.log(obj);//{0: "haha", 1: "xixi", 2: "hehe", 3: "heihei", name: "xiaoming", length: 1, push: ƒ}
obj.push('oh my god');
console.log(obj);//{0: "haha", 1: "oh my god", 2: "hehe", 3: "heihei", name: "xiaoming", length: 2, push: ƒ}

//上面的现象是由于push的内部处理造成的
//obj调用push,其实就是在以length的值为名称的属性上赋值,并且length+1,也说明了为什么类数组必须有length,且必须有索引才有意义
//所以当直接改变了length的值再push,当然就找错名字了,然后覆盖了已经有的值。
Array.prototype.push=function(){
    for(var i=0;i<arguments.length;i++){
    this[this.length] = arguments[i];
    this.length++;
   }
}
Plant Simulation智能行车/天车/起重机建模(1)-基本对象说明 摘要: MultiPortalCrane(多门式起重机)是一种灵活物料搬运设备,适用于造船、钢铁等行业,支持零件预组装、钢板/钢卷智能料场管理及设备装卸。其特点包括: 多门架协同:支持同轨道多门架运行,内置防撞检测; 模块化控制:可独立调节门架、小车及吊钩的速度、加速度和悬臂长度; 多样化搬运:通过目标位置设置或连接器实现零件运输; 故障与统计:可配置MTTR和可用率,实时监控各部件状态。 通过对话框可自定义轨道尺寸、门架数量及运动参数,并支持编程调用(如getPortals方法)。适用于需高精度定位和协同 阅读详情

相关推荐

SqlSugar避坑指南:C#操作MySQL时你可能会忽略的5个细节

本文分享了使用C#和SqlSugar框架操作MySQL数据库时的实战避坑指南。针对连接配置、实体映射、查询性能、事务处理等关键环节,深入剖析了5个容易被忽略但至关重要的细节,帮助开发者提升项目稳定性和执行效率,避免常见陷阱。

delta的博客 276

在 JavaScript 中交换数组元素

在 JavaScript 中交换数组元素

six6de6的博客 2815

别再到处找离线包了!Visual Studio 2022 企业版/社区版离线安装保姆级教程(含工作负载选择指南)

本文提供Visual Studio 2022企业版/社区版离线安装的详细教程,包括工作负载选择指南和批量安装优化策略。针对网络隔离或带宽受限环境,介绍如何制作离线安装包、选择合适的工作负载组合,并分享高级技巧如增量更新和自动化部署,帮助团队高效统一开发环境配置。

weixin_28745821的博客 732

js数组调换两个元素的位置

1、方法一 let arr = [1, 2, 3, 4, 5] let t = "" // 交换第三个和第四个元素 let x = 3, y = 4 let t = arr[x]; arr[x] = arr[y]; arr[y] = t; console.log(arr) /// [1,2,4,3,5] 2、方法二 let arr = [1, 2, 3, 4, 5] // 交换第三个和第四个元素 let x = 3, y = 4 arr.splice(x - 1, 1, ...arr.splice

Kino的博客 6299

Solidworks二次开发(C# .NET API):从零构建装配体与虚拟零件

本文详细介绍了使用C#进行Solidworks二次开发,从零构建装配体与虚拟零件的完整流程。通过.NET API实现设计自动化,涵盖环境搭建、核心对象模型、虚拟零件创建与外部化保存等关键技术,帮助工程师将重复性建模工作程序化,大幅提升设计效率与标准化水平。

alice7model的博客 607

ADAS系统架构与核心功能解析:从感知到执行的智能驾驶方案

高级驾驶员辅助系统(ADAS)是现代汽车智能化的核心技术,其本质是通过传感器融合、算法决策与车辆控制,构建一个“感知-决策-执行”的闭环系统。在技术原理上,ADAS依赖摄像头、毫米波雷达、激光雷达等多源传感器进行环境感知,并通过深度学习模型与融合算法(如卡尔曼滤波)构建精准的环境模型。其技术价值在于提供主动安全冗余与驾驶舒适性,核心应用场景包括自动紧急制动(AEB)、自适应巡航(ACC)及车道保持辅助(LKA)等。随着传感器成本下降与域控制器算力提升,ADAS正从高端配置向主流车型快速普及,并逐步向高阶导航

weixin_31062533的博客 418

如何在 javascript 中交换数组元素

在 JavaScript 中,我们可以轻松地将数组对象重新分配给默认设置为数组对象的变量,并使过程更进一步,以交换两个数组的元素。当交换开始时,变量 a 获取 x 的元素,而 x 接收 y 的元素。当我们执行 7^4 时,7 对应的位模式是 111,4 是 100。在下面的示例中,我们将采用两个具有相应元素的数组。和 y[0] = 100,所以在这种情况下,结果存储在 y[0] 中是 111 = 7。因此,我们交换了 x 和 y 数组的第一个元素,我们可以为每个索引元素重复此迭代。结果推断出交换结果。

迹忆客 1707

[Unity]-[UI]-[Image] 关于UI精灵图资源导入设置的详细解释

如果纹理存储了有特定含义的信息,并且您需要着色器中的确切值(例如,平滑度或金属度),请禁用此属性。此选项允许将纹理编码为特定格式(RGBM 或 dLDR,具体取决于平台)并通过后期处理步骤对纹理数据进行处理(推拉式扩张通道)。使用在3D模型的专业法线贴图。通用的纹理类型,一般在Material上的材质图片参数使用,比如漫反射、法线贴图这些。​​Compression​​:ASTC 6x6(移动端)或DXT5(PC)​​Compression​​:BC5(PC)或ASTC 6x6(移动端)

sky_smile_Allen的博客 2171

JavaScript交换数组元素位置的几种方式

JavaScript交换数组元素位置的几种方式 交换元素在开发或者做算法时,会经常使用,总结了一下几种方式 1、运用第三方变量 这是最基础的一种方式,创建一个变量作为中转 //需要交换的两个变量 let [a,b] = [1,3] //创建的中转变量 let temp = [] temp = a a = b b = temp console.log(a,b) // 3,1 2、splice()方法 splice()方法用于插入、删除、替换数组元素,会返回被删除的元素 array.splice(ind

努力努力再努力的博客 2万+

STM32H7 FMC驱动TFT-LCD原理与实战

TFT-LCD并行接口驱动是嵌入式人机交互的基础技术,其核心在于将显示控制器抽象为存储器映射设备,依托硬件时序控制器实现低开销、高确定性刷新。FMC(Flexible Memory Controller)作为STM32H7系列的关键外设,通过地址/数据总线复用、可配置读写时序及Bank分区机制,支持将ILI9341、ST7789等主流LCD控制器挂载为‘慢速异步存储器’,从而替代GPIO模拟8080时序或LTDC+DMA2D方案。该技术显著降低CPU占用率,提升帧率稳定性,适用于工业HMI、实时仪表盘等对响

weixin_32306683的博客 548

4、同轴3 - RRR球面并联机构运动分析与自主移动农业水果采摘机器人设计

本文研究了同轴3-RRR球面并联机构的运动学与速度分析,采用几何与数值方法进行位置分析,并利用螺旋理论简化雅可比矩阵的推导,通过ADAMS仿真验证了结果的准确性。同时提出一种新型自主移动农业水果采摘机器人设计,具备多功能末端执行器、水果软管转移系统和配重式静态稳定性结构,旨在减少采摘损伤、提升效率。文章还探讨了该机构在机器人控制与仿真中的应用潜力,以及采摘机器人在智能化升级与多机协作方面的发展方向。

y4z5a6b7的博客 246

非常详细的JavaScript 数组,字符串的方法及使用

JavaScript 数组,字符串的方法 数组的概念及定义 数组:一组任意类型或者相同类型的数据。 除了 Object 类型之外,Array 类型是ECMAScript 最常用的类型。而且 ECMAScript 中的 Array 类型和其他语言中的数组有着很大的区别。 虽然数组都是有序排列, 但 ECMAScript 中的数组每个元素可以保存任何类型。ECMAScript 中数组的大小也是可以调...

annie_7的博客 582

从 SAP GUI 走向 SAP Fiori:一套面向 SAP S/4HANA 的用户迁移实战方法论

SAP S/4HANA转型中,用户从SAP GUI迁移到Fiori的难点在于业务价值的重构而非简单的界面替换。Fiori的核心价值在于角色化、实时洞察和智能决策,而非完全替代GUI。成功迁移需分阶段推进:先展示关键角色的价值,建立统一入口,再逐步提高Fiori占比。让用户参与设计比后期培训更重要,需通过具体场景(如采购优先级管理)展示效率提升。迁移策略应平衡新旧界面优势,让Fiori成为业务价值触达的主要方式,而非强制替换。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 236

前端JavaScript篇之JavaScript 类数组对象的定义?如何将类数组对象转换为真正的数组

类数组对象指的是具有类似数组结构(类似于数组的属性或方法)的普通JavaScript对象。尽管它们不是真正的数组,但可以像数组一样进行一些类似的操作。通常,类数组对象具有数值索引和length属性,但不具有数组的原型方法如push、pop等。

星辰迷上大海的博客 2565

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【JavaScript】类数组详解

【JavaScript】类数组详解 文章目录【JavaScript】类数组详解什么是类数组类数组转换成数组ES6 的方法转数组callee属性箭头函数没有argumentsHTMLCollectionNodeList 什么是类数组 类数组对象,就是指可以通过索引属性访问元素并且拥有 length 属性的对象。 JavaScript 中有哪些情况下的对象是类数组呢? 函数里面的参数对象 arguments; 用 getElementsByTagName/ClassName/Name 获得的 HTMLC

前端学习博客 3767

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vue.js 数组里面有对象、数组_JavaScript 类数组对象

JavaScript类数组对象的定义:可以通过索引访问元素,并且拥有length属性。没有数组的其它方法,例如:push,forEach,indexOf等下面让我们从读写,长度,遍历这三个方面看看:读写:let foo = { 0: '白茶', 1: 23, 2: 'man', length: 3 }; let arr = ['白茶', 23, 'man']; ...

weixin_39859128的博客 443

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【原生JS】什么是类数组(Array-like Objects)最全详解

类数组对象(Array-like objects)是 JavaScript 中具有数字索引和 length 属性但不具备数组方法的特殊对象。主要类型包括函数内部的 arguments 对象、DOM 操作返回的 NodeList 和 HTMLCollection,以及自定义的类数组结构。这些对象无法直接使用数组方法,但可以通过 Array.from() 或展开运算符转换为真正数组。类数组的设计初衷是为了性能优化和接口一致性,在 DOM 操作等场景中广泛应用。

silverclayz的技术分享 1318

js中 类数组对象

js中 类数组对象类数组对象 自身特征:类数组对象 方法属性:常见的 类数组对象 介绍: 类数组对象 自身特征: 类数组对象首先是个对象,非null,非undefined,另外该对象长度(小于2^32)有限。可以对照代码理解一下它的含义:假设obj是一个类数组对象 obj && typeOf obj=="object" //n非null,undefined,且是对象 &...

weixin_40268470的博客 2814

【JavaScript】类数组对象

本文主要整理了JavaScript中的类数组对象和arguments知识点。

Sco_jing的博客 3078

【前端】JavaScript 中 arguments、类数组与数组的深入解析

通过这篇文章,我们深入探讨了 JavaScript 中 arguments 对象的定义、特性、应用场景,以及类数组与数组的区别,并结合现代语法如剩余参数对其进行了优化替代的说明。理解这些内容将帮助我们在日常开发中更高效地处理函数参数问题,同时编写出更简洁、易于维护的代码。随着 JavaScript 生态系统的不断演进,掌握这些特性不仅能提升开发效率,还能让我们编写出更具现代化风格、更符合最佳实践的代码。 2024.11.22-✍

禅宗里有一个词叫做“因缘和合”。 所谓因缘,是指事件要发生所必须的条件。因缘和合就是当你聚集了这件事的一切条件,它就会自然而然的发生。“它就会自然而然的发生”,这种朴素而坚定的价值观让我们感到无比安心,安心到可以不用有任何担心焦虑。 1412

javascript 类数组

一、什么是类数组 具有 length 属性,且其属性为非负整数(类索引)的对象 不具有数组的方法 二、常见的类数组 函数的 arguments 对象 DOM 对象列表(比如通过 document.querySelectorAll 得到的列表) 三、类数组与数组的相互转换 1. 数组转类数组 Array.prototype.push.apply(arrayLike, array) var array = [1,2,3]; var arrayLike = {}; Array.prototype.pu

Novice-XiaoSong的博客 312

JavaScript什么是类数组?

JavaScript怎么让类数组使用上数组的方法?什么是类数组?数组丰富的内建方法有哪些?如何让类数组使用上数组丰富的内建方法? 什么是类数组? JavaScript 常见的类数组有arguments,还有获取Dom元素方法返回的结果(比如getElementsByTagName) 自定义类数组要怎么定义? 1. 类数组必须包含length属性 2. 类数组中 数组丰富的内建方法有哪些? 如何让类数组使用上数组丰富的内建方法? ...

qq_39225639的博客 3472

理解javascript类数组

js数组,相比大家都很熟悉,因为走到哪都要用,但它有个“双胞胎弟弟” ,叫类数组(也叫伪数组),可能有的人了解,有的人不了解,今天我们来看一看。 什么是类数组 顾名思义,这玩意儿肯定是个长得像数组,但又不算数组的东西。那到底是个啥,其实它就是一个对象,一个长的像数组的对象。 和数组的区别 那类数组和数组有啥区别: 1、都有length属性 2、类数组也可以for循环遍历,有的类数组还可以通过 for of 遍历 3、类数组不具备数组的原型方法,因此类数组不可调用相关数组方法(如,push,slicec.

weixin_42707287的博客 6803

JS中的类数组以及类数组转数组的方法

JS中类数组转数组的方法(ArrayLike) 1、首先我们要清楚什么是类数组(ArrayLike) 拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解) 不具有数组的所有方法 2、JavaScript中常见的类数组 arguments对象 DOM方法返回结果(getElementsByTagName()、getElemen...

z-ying-jian的博客 672

js中的类数组对象

首先先介绍一下数组和对象是啥 一、数组 数组是一个有序的数据集合,其索引值从0开始依次递增,有length属性,用于获取数组的元素个数,内部的值可以是任何js数据类型 二、对象 对象是一个无序的内部由若干键值对组成的数据集合,它没有length属性,但是我们可以通过把它内部的键改为从0开始依次递增的值来模拟数组,这样就成了类数组对象 三、类数组对象 3.1 什么是类数组对象 类数组对象首先它是一个对象,但是有数组的某些特点。怎么构造类数组对象呢?先把对象中的键都改为从0开始...

weixin_49343253的博客 1213

js类数组用法以及类数组转数组的方法

类数组基本形态,属性要为索引(数字)属性,必须有length属性(最重要),最好加上push。 使用起来和数组一样,(可以使用数组的方法,但是使用前必须先在类数组中定义),也可以当成对象使用。存储数据能力更强。 //类数组基本形态,属性要为索引(数字)属性,必须有length属性(最重要),最好加上push //使用起来和数组一样, var obj={ "0":"a", "1":"b", "2":"c", name:

weixin_44164982的博客 577
上一篇: js---圣杯模式 ,枚举,如何区分数组和对象,callee
下一篇: css---基础技巧总结
neoma安荷
博客等级 码龄9年 8粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值