
内有iterator接口,所以能够使用for in和for of,当然for in是不会和数组一样有123的,声明都没有,而for of能够输出集合里的所有的元素。
会自动将重复的元素去除,就算是在声明的时候添加了多个相同的元素,它就只会保存一个
声明
let set = new Set([1, "2"]);
for(let v of set){
console.log(v);//遍历输出;
}
console.log(set.size);//返回集合大小
console.log(set.add(3));//增加一个集合元素,返回集合
console.log(set.delete(10))//返回boolean值,是否删除成功,有的时候可能都没有这个元素
set.has("sf");//判断是否有这个元素,返回boolean值
2. 总结Map的属性和方法,方法用代码来解释
声明
就是普通的对象声明方式
let m = new Map();
添加元素
m.set("name", "iceylia");
m.set("change", function(){});
得到大小
console.log(m.size);//2
清空地图
m.clear();
访问元素
console.log(m.get("name"));//iceylia
console.log(m.has("name"));//true;
遍历
for(let v of m){
console.log(v);
console.log(v[1]);//iceylia function
}
3. 分别用set和map来解决这道题
题目
leetcode349. 两个数组的交集
set/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
let set1 = new Set();
let ans = [];
let ansIndex = 0;
for(let i = 0; i < nums1.length; i++){
set1.add(nums1[i]);
}
for(let i = 0; i < nums2.length; i++){
if(set1.has(nums2[i])){
set1.delete(nums2[i]);
ans[ansIndex++] = nums2[i];
}
}
return ans;
};
map
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
let m = new Map();
let ans = [];
let ansIndex = 0;
for(let i = 0; i < nums1.length; i++){
m.set(nums1[i], 0);
}
for(let i = 0; i < nums2.length; i++){
if(m.has(nums2[i]) && !m.get(nums2[i])){
m.set(nums2[i], 1);
ans[ansIndex++] = nums2[i];
}
}
return ans;
};
感觉自己凭实力比较好地做出一个题目的感觉是真的很好。
4. 复习数组的属性和方法,方法用代码来解释 属性 arr.length长度;arr.constructor返回数组的构造函数arr.prototype 原型对象 用于给对象添加属性和方法。 方法let arr = [];
let arr1 = new Array("c");
let arr2 = ["afd", 2];
//入栈,返回入栈数量
console.log(arr.push("a", "b", "c"));//3
//出栈,返回出栈元素
console.log(arr.pop());//c
//遍历
for(let i of arr){
console.log(i);//ab;
}
for(let i in arr){
console.log(i);//01
}
//从前面进行添加和删除
console.log(arr.unshift(0, 1));//添加,返回新长度4 01ab
console.log(arr.shift());//删除,返回元素0 1ab
//翻转原有数组,返回翻转后的数组
console.log(arr.reverse());//ba1
//排序,返回排序后原数组,默认升序,参数为函数,可自定义返回方式
console.log(arr.sort());//1ab
//连接
console.log(arr.concat(arr1));//1abc
console.log(arr);//1ab
//切割
console.log(arr.slice(0, 1)[0]);//1 arr[0]到1,不包含1包含0
console.log(arr.slice(-2))// ab 倒数第二个到最后一个
console.log(arr.slice(-2, -1))// a 倒数第二个
console.log(arr);//1ab
//拼接
console.log(arr.splice(0, 1))//1 ab
console.log(arr.splice(0, 2, "a", "b"));//ab
//插入
console.log(arr.join("-"));//a-b
console.log(arr);//ab
//查找
console.log(arr.includes("a"));//true
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)