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

龙岗网站制作竞价广告点击软件

龙岗网站制作,竞价广告点击软件,站长之家ppt素材,python课PPT关于web网站开发一、Set基础 在 JavaScript 中,Set 是一种集合(Collection)​数据结构,用于存储唯一值​(不允许重复),并且可以高效地进行添加、删除、查询等操作。它类似于数组(Array)…

一、Set基础

在 JavaScript 中,Set 是一种集合(Collection)​数据结构,用于存储唯一值​(不允许重复),并且可以高效地进行添加、删除、查询等操作。它类似于数组(Array),但成员的值都是唯一的,没有重复项。


1. Set 的基本特性

  • 存储唯一值Set 不会存储重复的值,如果尝试添加重复值,会被自动忽略。
  • 无序存储Set 中的元素没有索引,遍历顺序与插入顺序一致,但不支持索引访问(如 set[0])。
  • 可迭代:可以使用 for...of 或 forEach 遍历 Set 中的元素。
  • 支持任意数据类型:可以存储 numberstringobjectfunction 等,但 NaN 和 undefined 也可以被存储。

2. 创建 Set

const mySet = new Set(); // 空 Set
const mySet2 = new Set([1, 2, 3, 4, 4, 5]); // 自动去重,最终存储 [1, 2, 3, 4, 5]

3. Set 的常用方法

方法描述示例
add(value)添加一个值,返回 Set 本身(可链式调用)mySet.add(10).add(20)
delete(value)删除某个值,返回 boolean(是否删除成功)mySet.delete(1)
has(value)检查 Set 是否包含某个值,返回 booleanmySet.has(2)
clear()清空 SetmySet.clear()
size返回 Set 的元素个数(类似 Array.lengthmySet.size

示例:​

const set = new Set();set.add(1); // Set { 1 }
set.add(2); // Set { 1, 2 }
set.add(2); // 重复值,被忽略
set.add("hello"); // Set { 1, 2, "hello" }console.log(set.size); // 3
console.log(set.has(1)); // true
set.delete(1); // true
console.log(set.has(1)); // false

4. Set 的遍历方法

Set 是可迭代的,可以使用以下方式遍历:

​**(1) for...of 循环**

const set = new Set([1, 2, 3]);for (const item of set) {console.log(item); // 1, 2, 3
}

​**(2) forEach 方法**

set.forEach((value) => {console.log(value); // 1, 2, 3
});

​**(3) 转换成数组(Array.from 或 [...set])​**

const arr = Array.from(set); // [1, 2, 3]
const arr2 = [...set]; // [1, 2, 3]

5. Set 的应用场景

​**(1) 数组去重**

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)]; // [1, 2, 3, 4, 5]

​**(2) 判断元素是否存在(比 Array.includes 更快)​**

const set = new Set([1, 2, 3]);
console.log(set.has(2)); // true

​**(3) 存储非重复对象(需注意引用类型)​**

const obj1 = { name: "Alice" };
const obj2 = { name: "Bob" };
const set = new Set([obj1, obj2, obj1]); // 存储 obj1 和 obj2(obj1 只存一次)

​**(4) 数学集合运算(并集、交集、差集)​**

const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);// 并集
const union = new Set([...setA, ...setB]); // Set {1, 2, 3, 4}// 交集
const intersection = new Set([...setA].filter(x => setB.has(x))); // Set {2, 3}// 差集(A - B)
const difference = new Set([...setA].filter(x => !setB.has(x))); // Set {1}

6. Set 与 Array 的区别

特性SetArray
唯一性不允许重复值允许重复值
索引访问不支持 set[0]支持 arr[0]
查找效率has() 是 O(1)includes() 是 O(n)
顺序插入顺序索引顺序
方法add() / delete()push() / pop()

7. 注意事项

  • NaN 在 Set 中被认为是相同的值:
    const set = new Set();
    set.add(NaN);
    set.add(NaN); // 只会存一个 NaN
  • Set 存储对象时,比较的是引用而非值:
    const obj1 = { a: 1 };
    const obj2 = { a: 1 };
    set.add(obj1);
    set.add(obj2); // 会存储两个对象,因为引用不同

总结

  • Set 是一种存储唯一值的集合,适用于去重、快速查找、集合运算等场景。
  • 主要方法:add()delete()has()clear()size
  • 遍历方式:for...offorEach[...set]
  • 相比数组,Set 在去重和查找方面更高效,但不支持索引访问。

如果你需要存储不重复的值,并且希望高效地判断某个值是否存在,Set 是一个很好的选择!

二、349.两个数组的交集

给定两个数组 nums1 和 nums2 ,返回 它们的输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

 方法 1:使用 Set 去重 + 遍历查找

function intersection(nums1, nums2) {const set1 = new Set(nums1);const set2 = new Set(nums2);const result = [];for (const num of set1) {if (set2.has(num)) {result.push(num);}}return result;
}

方法 2:使用 Set + Array.filter

function intersection(nums1, nums2) {const set1 = new Set(nums1);const set2 = new Set(nums2);return [...set1].filter(num => set2.has(num));
}

方法 3:仅使用 Set + Array.includes(适用于小规模数据)​

function intersection(nums1, nums2) {const uniqueNums1 = [...new Set(nums1)];return uniqueNums1.filter(num => nums2.includes(num));
}

总结

  • 使用 Set 去重 是解决此类问题的关键。
  • 遍历查找交集 时,Set.has() 比 Array.includes() 更高效(O(1) vs O(n))。
  • 返回结果顺序不重要,因此直接返回过滤后的数组即可。

350. 两个数组的交集 II

 

给你两个整数数组 nums1nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

需要统计次数,就需要用上数组了。也可以用map 但还没复习到,后续会更新。

/*** @param {number[]} nums1* @param {number[]} nums2* @return {number[]}*/
var intersect = function(nums1, nums2) {let hashs = new Array(1001).fill(0);let result=[];for(let i=0;i<nums1.length;i++){hashs[nums1[i]]++;}for(let i=0;i<nums2.length;i++){if(hashs[nums2[i]]>0) {result.push(nums2[i]);hashs[nums2[i]]--;  }}return result;
};

 

http://www.dtcms.com/wzjs/510580.html

相关文章:

  • 深圳有做网站的吗seo优化排名怎么做
  • 大连做网站比较好的公司关键词搜索量查询
  • 美食网站建设的背景腾讯广点通
  • 网络营销产品概念的五个层次重庆seo结算
  • 家居网站建设策划开发太原百度网站快速优化
  • 如何建设阿里巴巴网站系统优化软件有哪些
  • shopify可以做企业网站嘛关键词点击工具
  • 政府网站建设栏目网页设计图片
  • 豆各庄做网站的公司seo收费低
  • 深圳的网站建设公司哪家好网站有吗免费的
  • 网站开发项目需求书广州百度seo公司
  • wordpress降低数据库查询时间合肥网站推广优化公司
  • 网站百度权重品牌策略包括哪些内容
  • 蓝色云主机一键wordpress合肥seo网站排名
  • 做网站建设的联系电话最新新闻事件摘抄
  • 用axure做网站原型的尺寸会计培训班多少钱
  • 做网站js还是jq怎么申请一个网站
  • 利用帝国cms网站建设谷歌首页
  • 小网站建设公司seo是什么意思啊
  • 学校网站建设开发项目计划报告短视频seo搜索优化
  • 阐述网站建设的步骤过程百度收录最新方法
  • 网站维护技术线上营销推广方式
  • 网站制作性价比哪家好今天微博热搜前十名
  • wordpress 图片不显示东莞有限公司seo
  • 什么是网站死链免费域名服务器
  • 网站做聚合是啥意思开发一个app平台大概需要多少钱?
  • 网站建设和网页设计pdf企业建站平台
  • logo设计的六大要素上海搜索seo
  • 北京网站改版费用整站优化系统厂家
  • 怎样创建网站或网页哈尔滨seo推广优化