资讯专栏INFORMATION COLUMN

石头理解的set

shinezejian / 1889人阅读

摘要:对对象进行遍历操作。对象没有提供访问指定值的方法。所以石头一般使用对象存放对象,然后检查是否有某个值,使用数组取数据。返回是否删除指定的对象。比如无法准确地取出指定的值。应该是做为一个数组对象的补充存在。

Set

set类似数组。其成员的值都是唯一的。

数组去重

const set = new Set([1,2,3,2,4,2,3,4])
console.log(set)
[...new Set(array)] // 返回无重复的数组

Set.add(value) 为set对象添加一个值
Set.size 返回set对象的长度
Set.delete(value) 删除set对象中的指定的值,并返回bool结果。
Set.has(value) 检查set对象中是否有指定的值
Set.clear() 删除指定set对象中的所有值

Set.keys() 返回一个以指定set对象的key组成的类数组对象。
Set.values() 返回一个以指定set对象的value组成的类数组对象。
Set.entries() 返回一个以key和value组成的数组组成的数组。
Set.forEach(fn(value, key) {}) 对set对象进行遍历操作。

set对象没有提供访问指定值的方法。要想访问指定值需要转为数组后再用数组的方法取指定值。

let set = new Set(["a", 1, 2, 2, 2, 1, 3])
let arr = [...set] // ["a", 1, 2, 3]
let index = arr.indexOf("a") // 0
console.log(arr[index]) // "a"

因为set对象在存数据时无重复值。在取时较困难。所以石头一般使用set对象存放对象,然后检查是否有某个值,使用数组取数据。
set对象不能判断对象是否相等。所以不能去重对象。

并集

let union = new Set([...seta, ...setb])

交集

let intersect = new Set([...seta].filter(x => setb.has(x)))

差集

let difference = new Set([.seta].filter(x => !setb.has(x)))
WeakSet

只能存放对象。

对对象是弱引用。

WeakSet.add(obj) 为WeakSet对象指定添加的对象。
WeakSet.delete(obj) 返回是否删除指定的对象。
WeakSet.has(obj) 返回是否存在指定的对象。

现在set对象的操作方法、属性太少。(比如:无法准确地取出指定的值。)所以把他只做为一个仓库对待。操作还要在数组中操作。
它出现在数组对象没有这些功能的时期。应该是做为一个数组对象的补充存在。要项目中应当把set/array结合起来使用。
set对象用处少。weakset对象的用处更少。

2018/08/05 by stone

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96585.html

相关文章

  • [leetcode] 403. Frog Jump

    摘要:还有一个石头可能由之前的多个石头到达,这又是可以优化的地方。当前结果可由之前的结果得出,且有重复的搜索方法,就需要用。 [链接描述]leetcode 题目。 有点类似于jump game, 只不过这里对步数有了隐形的要求,当前步数和之前步数有关。如果我们用brute force的方法来解,每一步有三种可能,一共n个石头,时间复杂度就是O(3^n)。这其中有很多步数是多余的,第i个石头...

    mo0n1andin 评论0 收藏0
  • 基于概率论分类方法:朴素贝叶斯

    摘要:基于概率论的分类方法朴素贝叶斯概述贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。另外一种有效计算条件概率的方法称为贝叶斯准则。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定非要是文本。 基于概率论的分类方法:朴素贝叶斯 1. 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本章首先介绍贝叶斯分类算法的基础—...

    LeviDing 评论0 收藏0
  • vue里面v-for列表循环

    摘要:取到里面的偶数位的值在计算属性不适用的情况下例如,在嵌套循环中你可以使用一个方法一段取值范围的也可以取整数。 列表渲染 v-for v-for可以把数据中的一个数组对应为一组元素v-for 指令需要以 item in items 形式的特殊语法, items 是源数据数组并且 item 是数组元素迭代的别名。 {{item.text}} data:{ items:[ ...

    verano 评论0 收藏0
  • Leetcode 刷题(持续更新)

    摘要:字母区分大小写,因此和是不同类型的石头。输入输出暴力解法将宝石中的每个元素在石头中的数量相加的时间复杂度为石头中的每个元素此元素在宝石中则官方解法哈希表将搜索的时间复杂度变为 本文章基于Datewhale第30期组队学习 2021.11.15 # 1 两数之和# 给定一个整数数组 nums...

    XanaHopper 评论0 收藏0
  • 石头理解vue-router(一)

    摘要:基础安装路由功能作用,使用定义组件与路由的映射。定义渲染组件的位置。作用定义注意动态路由的动态部分改变时原来的组件会被复用,这样就不会触发生命周期钩子函数。嵌套路由命名视图命名路由别名重定向将设置为组件属性命名路由就是给路由起个名字。 vue-router 基础 install CDN

    Sourcelink 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<