标签:spl 删除 的区别 dev each this 有序 values sea
类似于数组,但是成员的值都是唯一的, Set
本身是一个构造函数用来生成Set
数据结构
Set集合的常用方法:
add()
添加值,返回Set结构本身
const set = new Set()
set.add(1)
set.add(1)
set.add(2)
set.add(2)
console.log(set) //最终输出Set { 1, 2 }
delete()
删除值,返回布尔值表示是否删除成功
let set = new Set()
set.add(1)
set.delete(1) //true
console.log(set) //Set {}
has()
返回布尔值,判断Set
对象中是否含有某值
let set = new Set()
set.add(‘hello‘)
set.add(‘world‘)
set.has(‘hello‘) //true
set.has(1) //false
clear()
移除所有元素,没有返回值
keys()
返回一个Iterator
对象,对象按照原Set
对象元素的插入顺序返回其所有元素
let set = new Set()
set.add(‘1‘)
set.add(‘2‘)
const keys = set.keys()
console.log(keys) //{ ‘1‘, ‘2‘ }
console.log(keys.next().value) //1
console.log(keys.next().value) //2
values()
与keys()
用法一样,返回Iterator
对象,返回值也与keys()
一样
entries()
返回一个键值对形式的迭代器,类似[value, value]
形式的数组
value
是集合中的每个元素
let set = new Set()
set.add(‘1‘)
set.add(‘2‘)
const entries = set.entries()
console.log(entries.next().value) //[ ‘1‘, ‘1‘ ]
console.log(entries.next().value) //[ ‘2‘, ‘2‘ ]
? 类似于对象,是键值对的集合,数据可为任意类型,与Object
的区别在于Object
的键
只能是字符串或者Symbols
,但Map
可以为任意类型,且Map
中的键值是有序的
Map
结构的实例方法
set(key, value)
设置键值对,返回整个Map()
结构,若对应键已有值则覆盖原有的值
let map = new Map()
map.set(‘name‘, ‘张三‘)
console.log(map) //{ ‘name‘ => ‘张三‘ }
get(key)
获取key
对应的键值,若没有则返回undefined
let map = new Map()
map.set(‘name‘,‘张三‘)
console.log(map.get(‘name‘)) //张三
has(key)
返回布尔值,查询key
是否在当前对象中
let map = new Map()
map.set(‘name‘,‘张三‘)
console.log(map.has(‘name‘)) //true
console.log(map.has(‘age‘)) //false
delete(key)
删除key
对应的键值对,删除成功返回true
否则返回false
let map = new Map()
map.set(‘name‘,‘张三‘)
console.log(map.delete(‘name‘)) //true
console.log(map) //{}
clear()
清除所有键值对,没有返回值
keys()
返回新的Iterator
对象,按顺序插入Map
对象中所有key
let map = new Map()
map.set(‘name‘,‘张三‘)
map.set(‘age‘,‘21‘)
map.set(‘gender‘,‘男‘)
console.log(map.keys()) //{ ‘name‘, ‘age‘, ‘gender‘ }
values()
返回新的Iterator
对象,按顺序插入Map
对象中所有value
let map = new Map()
map.set(‘name‘,‘张三‘)
map.set(‘age‘,‘21‘)
map.set(‘gender‘,‘male‘)
console.log(map.keys()) //{ ‘张三‘, ‘21‘, ‘male‘ }
entries()
返回新的Iterator
对象,按顺序插入Map
对象中每个元素的[key,value]
数组
let map = new Map()
map.set(‘name‘,‘张三‘)
map.set(‘age‘,‘21‘)
map.set(‘gender‘,‘male‘)
console.log(map.entries())
//{ [ ‘name‘,‘张三‘ ],[ ‘age‘,‘21‘ ],[ ‘gender‘,‘male‘ ] }
forEach(callback,thisArg)
callback(key,value,Map)
必选,对象中每个元素都要执行的回调函数
key-当前元素的键
value-当前元素的值
Map-当前正在遍历的对象
thisArg`可选,回调函数执行时的`this`的值 ,`forEach()`返回值为`undefined
let map = new Map()
map.set(‘name‘,‘张三‘)
map.set(‘age‘,‘21‘)
map.set(‘gender‘,‘male‘)
map.forEach((value, key)=> {
console.log(key+‘ = ‘+value)
})
//name = 张三
//age = 21
//gender = male
? 最近在写js代码的时候,遇到一个比较棘手的问题,js代码for循环如果次数过多,会导致内层的for的变量未定义不可以使用的情况,使用map集合来实现数据的存储。
function getSearch(data){
if(data.id==‘‘){
return false;
}
else{
for(var i=0;i<Server.length;i++){
if(data.id==Server[i].id){
data.ip=Server[i].ip;
data.port=Server[i].port;
data.type=Server[i].type;
data.id=Server[0].id;
data.deviceId = ‘0‘;
}
}
// 定义一个map
var recMap = new Map();
// 先将所有集合的情况放到map中存储起来
for(var i = 0;i < Server.length;i++) {
recMap.set(Server[i].id,i+1);
}
// 需要和map集合比对的数据
var dat = data.id.split(";");
var rlist = [];
// 数据和map进行比对
for(var k = 0 ; k < dat.length ; k++){
// if条件筛选合适的
if(recMap.get(dat[k])){
var temp = {};
var j = recMap.get(dat[k])-1;
temp.ip=Server[j].ip;
temp.port=Server[j].port;
temp.type=Server[j].type;
temp.id=Server[j].id;
rlist.push(temp);
}
}
data.ListString = JSON.stringify(rlist);
}
}
参考链接:
https://segmentfault.com/a/1190000020091905
https://blog.csdn.net/weixin_41646716/article/details/91509295
标签:spl 删除 的区别 dev each this 有序 values sea
原文地址:https://www.cnblogs.com/clover-forever/p/14754588.html