当前位置: 首页 > news >正文

操作数组的方法

ES6 Array.of()返回所有参数数值组成的数组

let a = Array.of(1, 2, 3);//[1, 2, 3]
let a = Array.of(3); //[3]
let a = Array(3); [undefined, undefined, undefined]

ES6 Array.from()将两类对象转为真正的数组

第一个参数(必须):要转换为真正数组的对象

第二个参数(可选):对每个元素进行处理,将处理后的值放入返回的数组

第三个参数(可选):用来绑定this

//对象拥有length属性
let obj = {0: 'a', 1: 'b', 2: 'c', length: 3}
let arr = Array.from(obj); //['a', 'b', 'c']
let arr = Array.from('hello'); ['h', 'l', 'l', 'o']

改变原数组的方法

let a = [1, 2, 3];

//pop()删除数组最后一个元素,返回该元素
let item = a.pop() //item:3 a:[1, 2]

//shift()删除数组的第一个元素,返回该元素
let item = a.shift()// item:1 a:[2, 3]

//push()向数组最后一位添加元素, 返回新数组长度
let item = a.push(4) //item:4 a:[1, 2, 3, 4]

//unshift()向数组开头添加一个元素, 返回新数组的长度
let item = a.unshift(5)//item:4 a:[5, 3, 2, 1]

//reverse()用于颠倒数组元素的顺序
let item = a.reverse()//item:[3,2,1]    

splice()添加/删除数组元素,返回被删除的元素的新数组

语法: arr.splice(index, howmany, item1, ...)

index: 必须。整数,规定添加删除的位置,使用负数可以从数组结尾处规定位置。

howmany: 必须。要删除的项目数量。为0则不删除。

item,... :可选。向数组添加新的项目。

1.删除元素

let a = [1, 2, 3, 4, 5, 6, 7];
let itme1 = a.splice(0, 3);//返回被删除项目的数组[1, 2, 3] a变为[4, 5, 6, 7]
let item2 = a.splice(-1, 3)// 从6开始后面只有1个元素所以只能删除7,返回7

2.删除并添加 往后加参数即可,先删除后添加

let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(-2, 3, '1', '2')//[6, 7] a:[1,2,3,4,5,'1','2']

sort()对数组元素进行排序,返回该数组

var array = [10, 1, 3, 4,20,4,25,8];
array.sort(function(a, b) {return a- b})//[1,3,4,4,8,10,20,25];

array.sort(function() {return Math.random() > 0.5 ? 1 : -1})//随机排序

不改变原数组的方法

ES5:join、toLocateString、toStrigin、slice、cancat、indexOf、lastIndexOf

ES7: includes

join()数组转字符串 把数组中的所有元素通过制定的分隔符进行分割放入一个字符串,返回生成的字符串

let a = ['hello', 'world'];
let str = a.join();//'hello,world'
let str1 = a.join('+');//'hello+world'
let a= [['OBKoro1','23'],'test'];
let str1=a.join(); // OBKoro1,23,test
let b= [{name:'OBKoro1',age:'23'},'test'];
let str2 = b.join(); // [object Object],test
// 对象转字符串推荐JSON.stringify(obj);

所以,join()/toString()方法在数组元素是数组的时候,会将里面的数组也调用join()/toString(),如果是对象的话,对象会被转为[object Object]字符串。

slice() 浅拷贝数组的元素 返回回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,且原数组不会被修改。

let a= ['hello','world'];
let b=a.slice(0,1); // ['hello']
a[0]='改变原数组';
console.log(a,b); // ['改变原数组','world'] ['hello']
b[0]='改变拷贝的数组';
 console.log(a,b); // ['改变原数组','world'] ['改变拷贝的数组']
concat 用于合并连个或多个数组,返回一个新数组
indexOf() 查找数组是否存在某个元素,返回下标 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
lastIndexOf() 查找指定元素在数组中的最后一个位置

转载于:https://www.cnblogs.com/ts1996/p/10305335.html

相关文章:

  • MySQL安装失败,提示需安装MicroSoft Visual C++ 2013 Redistributable
  • HashMap源码分析笔记(一)
  • redis 学习笔记-cluster集群搭建
  • Java定义三个点Object...
  • Python学习链接
  • js给图层添加动态样式
  • LaTeX :font size 修改字体大小的几种方式
  • 4.1链表
  • 信号(SIGNAL)与槽(SLOT)
  • 类的约束 和 异常处理
  • jzoj3208. 【JSOI2013】编程作业(kmp)
  • JS中arguments对象
  • (七)Knockout 创建自定义绑定
  • 【特征提取】MultiBlock-LBP特征
  • STM32L431驱动带UC1698芯片调试记录
  • #Java异常处理
  • JavaScript对象详解
  • k个最大的数及变种小结
  • mongodb--安装和初步使用教程
  • MQ框架的比较
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Yeoman_Bower_Grunt
  • 编写高质量JavaScript代码之并发
  • 产品三维模型在线预览
  • 翻译:Hystrix - How To Use
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 新版博客前端前瞻
  • 学习使用ExpressJS 4.0中的新Router
  • 一个项目push到多个远程Git仓库
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 用element的upload组件实现多图片上传和压缩
  • 1.Ext JS 建立web开发工程
  • 函数计算新功能-----支持C#函数
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • (0)Nginx 功能特性
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core中Emit的使用
  • .NET Remoting学习笔记(三)信道
  • .NetCore项目nginx发布
  • @selector(..)警告提示
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [ 蓝桥杯Web真题 ]-布局切换
  • [2016.7.Test1] T1 三进制异或
  • [ARC066F]Contest with Drinks Hard
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [C/C++]关于C++11中的std::move和std::forward
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [cogs2652]秘术「天文密葬法」
  • [IOI2007 D1T1]Miners 矿工配餐