当前位置:首页 > 生活百科

js往数组中添加元素添加方法(js给数组对象添加一个对象)

栏目:生活百科日期:2025-03-06浏览:0

数组的创建

几种创建数组的方法 1. let a1 = new Array(); 2. let a1 = Array();//与第一种方式等价 3. let a1 = Array.from(obj); //ES6 4. let a1 = Array.of(); //ES6

1,2两种方法创建数组,如果传入的参数是数字,表示新创建的数组的长度,而不是数组的元素。of方法解决1,2两种方法的歧义,数字代表的是数组的元素。
Array.from方法用于将类数组结构转换为数组实例,Array.of方法用于将一组参数转换为数组实例。

Array.from()第一个参数是一个可迭代的类数组对象,或者有一个length属性的可索引元素结构。

Array.from("Polo"); //&['P', 'o', 'l', 'o']const m = new Map().set(1,2).set(3,4);const s = new Set().add(1).add(2).add(3).add(4);Array.from(m); //&[&[1,2],&[3,4]]Array.from(s); //&[1,2,3,4]

Array.from()可接收第二个可选映射函数参数,这个函数可以直接增强新数组的值,也就是说可以对第一个参数里的值做处理,新建数组的值为经过第二个参数函数加工的值。

const a2 = Array.from(&[1,2,3,4], x =&> x * 2); //&[2,4,6,8]

Array.from()还可以接收第三个可选参数,用于指定映射函数中this的值,但这个重写的this值在箭头函数中不适用。

const a3 = Array.from(&[1,2,3,4],function(x){return x**this.exponent},{exponent:2}); //&[1,4,9,16]

数组length属性
数组的length属性不是只读的,通过修改length属性,可以从数组末尾删除或添加元素。

let colors = &['red', 'blue', 'green'];colors.length=4;//数组末尾增加一个元素,值为undefinedcolors&[99] = 'black';//数组长度变为100,3-98位置的元素值为undefined

检查是否为数组
ES6之前的版本,检查数组用各类方式,各有各的道理,也有各自的问题。ES6提供了Array.isArray方法,确定一个值是否为数组。

if (Array.isArray(value)) {    //操作数组}

数组迭代方法

1. keys() //返回数组索引的迭代器2. values() //返回数组元素的迭代器3. entries() //返回索引/值对的迭代器4. for(const &[index,element] of a.entries()) //ES6解构语法在循环中拆分键值对

复制和填充
Array.copyWithin(): 按照指定范围浅复制数组中的部分内容,然后将他们插入到指定索引开始的位置。第1个参数表示插入位置的索引,第2个可选参数表示开始复制的索引位置。

let ints;reset = () =&> ints = &[0,1,2,3,4,5,6,7,8,9];reset();ints.copyWithin(5); //&[0,1,2,3,4,0,1,2,3,4]reset();ints.copyWithin(0,5); &[5,6,7,8,9,5,6,7,8,9]reset();ints.copyWithin(4,0,3); //&[0,1,2,3,0,1,2,7,8,9]

Array.fill():第1个参数,表示用于填充的元素,第2个可选参数,表示填充的开始位置,第3个可选参数,表示填充的结束位置。fill()静默忽略超出数组边界,零长度及方向相反的索引范围。

const zeroes = &[0, 0, 0, 0, 0];zeroes.fill(5); //&[5,5,5,5,5];zeroes.fill(0);zeroes.fill(7,3); //&[0,0,0,7,7]zeroes.fill(0);zeroes.fill(7,1,3); //&[0,7,7,0,0]

数组排序方法

reverse(): 将数组元素反向排列
sort():按升序排列数组元素,sort()会在每一项上调用String()转型函数,然后比较字符串来决定顺序。sort()方法可以接收一个比较函数。用于判断哪个值应该排在前面。

let values = &[0,1,5,10,15];values.reverse(); //&[15,10,5,1,0]values.sort(); //&[0,1,10,15,5]values.sort((x,y) =&> x - y); //&[0,1,5,10,15]

迭代方法

every():对数组每一项都运行传入的函数,如果每一项都返回true,则这个方法返回true。
some():对数组每一项都运行传入的函数,如果有一项函数返回true,则这个方法返回true。
filter():对数组每一项都运行传入的函数,函数返回true的项会组成之后的返回。
map(): 对数组每一项都运行输入的函数,返回由每次函数调用的结果构成的数组。
forEach():对数组每一项都运行传入的函数,没有返回值。

let numbers = &[1,2,3,4,5,6];numbers.filter((item,index,array) =&> item &> 2); //&[3,4,5,6]numbers.map((item,index,array) =&> item * 2); //&[2,4,6,8,10,12]numbers.forEach((item,index,array) =&> {  //执行某些操作});

归并方法

reduce():从数组第一项开始遍历到最后一项。
reduceRight():从最后一项开始遍历至第一项。

let values = &[1,2,3,4,5];let sum = values.reduce((prev,cur,index,array) =&> prev +cur); //15

数组其他方法

concat(): 在现有数组全部元素基础上创建一个新数组
slice():创建一个包含原有数组中一个或多个元素的新数组。
splice():在数组中插入(删除、替换)元素。第1个参数,操作的位置,第2个参数,要删除的元素个数,后面的n个参数,插入到数组中的元素。
indexOf():查找元素所在的索引位置。
lastIndexOf(): 和indexOf方法类似,区别是从后往前找。
includes():判断是否包含元素。

let color = &['red','green','blue'];let color2 = colors.concat('yellow',&['black','brown']);//&['red','green','blue','yellow','black','brown']let color3 = colors.slice(1); //&['green','blue']let color3 = colors.slice(1,2); //&['green']let removed = colors.splice(0,1); // removed = red; colors = &['green','blue']colors.splice(1,0,'yellow','orange'); //在第一个位置插入两个元素 &['green',blue','yellow','orange']let numbers = &[1,2,3,4,5,6,7,8,9];numbers.indexOf(4);//3numbers.includes(5);//true

Map:

ES6新增的集合类型,可以给Map构造函数传入一个可迭代对象,需要包含键/值对数组。Map可以使用任何javascript数据类型作为键。map的值类型也是没有限制的。Map实例会维护键值对的插入顺序,可以根据插入顺序执行迭代操作。

API:
has(key) :判断键是否存在。
set(key,value):设置键值对。
get(key):根据key获取对应的值。
delete(key):删除键值对。
clear():清除这个map。
size属性:获取map的长度。

Map与Object比较:

内存占用:不同浏览器情况不同,但给定固定大小的内存,Map可以存更多的键值对
插入性能:插入Map一般会稍快。
查找速度:如果只包含少量键值对,Object速度更快,如果代码涉及大量查找操作,某些情况下选Object可能更好
删除速度:Map的delete()操作性能更优
综上所述,一般情况下使用Map代替Object做键值操作是更明智的选择

WeakMap:

与Map类似的数据 结构,主要应对垃圾回收优化操作,它不会阻止垃圾回收操作。WeakMap不可迭代键,也不能clear()整个数据。它非常适合保存关联元数据,比如dom树种的一个元素,作为WeakMap的key,当dom元素被删除是,WeakMap对应的值被销毁。如果把dom元素做为Map的key,则不会释放dom元素,造成内存浪费。这是WeakMap中Weak的正解。

Set:

集合,存储不重复的值。Set会维护插入是的顺序,因此支持顺序迭代。

API:
add():增加值。
has():判断是否包含值。
delete():删除值
size属性:Set长度

“js往数组中添加元素添加方法(js给数组对象添加一个对象)” 的相关文章

创业板涨幅是多少,最新创业板涨幅排名

春节后,创业板指持续演绎着神奇红周一破关的故事。创业板今年大涨40%!春节后第一个周一涨3.53%破1300点整数关。第二个周一涨4.11%破1400点整数关。...

winrar解压包文件怎么解压(文件解压实操教程)

刚买了安卓手机的小林最近迷恋上了逛各大安卓论坛,因为论坛里可以下载到很多机友发布的新奇软件,而这些软件是安卓市场里找不到的。但是在处理下载的压缩包的过程中小林也...

如何自己制作优惠券说明(自制优惠券的小程序方法)

众所周知,发放优惠券是商家店铺在举办营销活动时常用的手段。在互联网日益渗透进我们生活的21世纪,纸质优惠券由于其不便保存携带等特征逐渐被人们淘汰,一种更便于领取...

1995年属什么生肖,猪属相婚配表

95年属猪最佳结婚年龄是几岁呢?对于婚姻我们都是非常期待的,尤其在遇到另一半之前,我们总是非常期待另一半能够早一点出现,属猪的人性格温和,他们对生活非常有热情,...

小商品批发什么最好卖(2020义乌最畅销的暴利小商品)

经商买卖者:以下9种小商品是目前我国市场上推出的最新畅销产品,具有新颖、时尚、优质、价廉、实用、环保等特点,作为生意人,如果你能及时经销这些新产品,肯定会让你“...

adsafe广告管家怎么样(拦截手机广告最好软件)

今天给大家分享11款电脑黑科技软件,都是小编平常所用的,每款都很实用,下面我们一起来看看吧。1、硕鼠下载器将想要看的视频链接复制进去,便能够进行下载,主流平台都...

可惜了! 又一SEO论坛站已打包出售!

之前一个做的不错的叫暴风SEO论坛的网站,建站初期在连续卢松松博客投了几个月广告,而引起了我的关注,近日发现疑似准备出售,可惜了!下图中这个叫暴风SEO论坛的网...

华为荣耀手机怎么恢复出厂设置(华为恢复出厂设置的两种

荣耀8x怎么恢复出厂设置?手机进行了错误的设置导致出现问题时,我们可以通过恢复出厂设置来解决,今天二培为大家带来详细的方法。荣耀8x怎么恢复出厂设置?首先在恢复...

华硕主板怎么样(华硕主板参数介绍)

自华硕第一款GAMER主板推出至今,经历了诸多产品的推出,我们已经能够体会到华硕在GAMER系列的决心,对于游戏主板市场,华硕的态度也是“死磕”无疑。在2015...

2020年淘宝详情页尺寸(淘宝详情页尺寸及设计技巧)

?宝贝详情页是可以给人们带来想要的产品信息,宝贝详情页的制作尤为重要,人类是视觉动物,若详情页的展示能够美观,又能有文案在理,一定能迎来广大用户的追捧。前面我们...