javascript数组的总结和扩展

修改原数组的方法:splice/reverse/fill/copyWithin/sort/push/pop/unshift/shift

原数组不变的方法:slice/map/forEach/every/filter/reduce/entries/find

1、修改数组的:

splice(index,num,item1,item2..) //index开始删除数组下标,num删除数量,item。。插入的元素

reverse() 数组翻转

sort() 数组排序

push()数组末尾增加一个元素

unshift() 数组头部增加一个元素

pop() 取出数组末尾的一个元素

shift() 取出数组头部一个元素

es6新增的方法:

concat()合并数组 [3,45].concat(3,[3,7])

fill()  fill方法使用给定值,填充一个数组

new Array(3).fill(7)

// [7, 7, 7]

copyWithin(target,start,end);数组实例的copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组

target(必需):从该位置开始替换数据。如果为负值,表示倒数。

start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示倒数。

end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。

[1, 2, 3, 4, 5].copyWithin(0, 3)

// [4, 5, 3, 4, 5]

2、不修改数组的方法:

slice/map/forEach/every/filter/reduce/entries/find

 

ES6新增的数据结构

一、Set:它类似于数组,但是成员的值都是唯一的,没有重复的值

创建set数据方法:

(1)通过add

var a = new Set();

[2,3,4].forEach((index,val)=>{

a.add(val)

})

(2)直接new操作数组和类数组

var a = new Set([23,45,66])

当然set也能转为化普通数组[...a]

// 去除数组的重复成员

[...new Set(array)]

其中NaN和NaN是相等的,{}和{}是不相等的

Set 结构的实例有以下属性:

Set.prototype.constructor:构造函数,默认就是Set函数。

Set.prototype.size:返回Set实例的成员总数。

Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。

add(value):添加某个值,返回 Set 结构本身。

delete(value):删除某个值,返回一个布尔值,表示删除是否成功。

has(value):返回一个布尔值,表示该值是否为Set的成员。

clear():清除所有成员,没有返回值。

遍历方法:

Set 结构的实例有四个遍历方法,可以用于遍历成员。

keys():返回键名的遍历器

values():返回键值的遍历器

entries():返回键值对的遍历器

forEach():使用回调函数遍历每个成员

let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {

console.log(item);

}

// red

// green

// blue

 

for (let item of set.values()) {

console.log(item);

}

// red

// green

// blue

 

for (let item of set.entries()) {

console.log(item);

}

// ["red", "red"]

// ["green", "green"]

// ["blue", "blue"]

let set = new Set([1, 4, 9]);

set.forEach((value, key) => console.log(key + ' : ' + value))

其中map filter Array.from也能操作

二 Map :Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适

创建Map数据结构:

(2)通过set方法:

const m = new Map();

const o = {p: 'Hello World'};

 

m.set(o, 'content')

m.get(o) // "content"

 

m.has(o) // true

m.delete(o) // true

m.has(o) // false

(2)通过数组方法

const map = new Map([

['name', '张三'],

['title', 'Author']

]);

 

map.size // 2

map.has('name') // true

map.get('name') // "张三"

map.has('title') // true

map.get('title') // "Author"

(3)Map 结构原生提供三个遍历器生成函数和一个遍历方法。

 

keys():返回键名的遍历器。

values():返回键值的遍历器。

entries():返回所有成员的遍历器。

forEach():遍历 Map 的所有成员。

(4)Map还可以通过...[]转换为数组

const myMap = new Map()

.set(true, 7)

.set({foo: 3}, ['abc']);

[...myMap]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值