首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的代码行为就像我在字典中有重复的键一样,尽管我使用了唯一的字符串?Javascript / Appscript

在JavaScript和AppScript中,当我们使用唯一的字符串作为键时,代码行为会出现类似字典中有重复键的情况,这是因为在这两种编程语言中,键实际上是基于对象的引用,而不仅仅是基于字符串的内容。

具体来说,当我们使用一个唯一的字符串作为键时,JavaScript和AppScript内部会将该字符串转换为一个对象引用,并将其作为键来存储和检索值。这意味着,即使我们使用相同的字符串作为键,但如果它们是通过不同的对象引用来表示的,它们仍然被认为是不同的键。

这种行为可以通过以下示例代码进行说明:

代码语言:txt
复制
var key1 = "myKey";
var key2 = "myKey";

var obj1 = {};
var obj2 = {};

obj1[key1] = "Value 1";
obj2[key2] = "Value 2";

console.log(obj1[key1]); // 输出 "Value 1"
console.log(obj2[key2]); // 输出 "Value 2"
console.log(obj1[key2]); // 输出 undefined

在上面的代码中,虽然key1key2的字符串内容相同,但由于它们分别通过不同的对象引用表示,因此它们被认为是不同的键。因此,obj1[key1]obj2[key2]可以分别访问到它们各自存储的值。

要解决这个问题,我们可以使用Map对象,它可以确保我们使用唯一的字符串键时不会出现重复键的行为。Map对象是ES6中引入的一种数据结构,用于存储键值对,并且不会将键转换为对象引用。以下是使用Map对象的示例代码:

代码语言:txt
复制
var key1 = "myKey";
var key2 = "myKey";

var map = new Map();

map.set(key1, "Value 1");
map.set(key2, "Value 2");

console.log(map.get(key1)); // 输出 "Value 1"
console.log(map.get(key2)); // 输出 "Value 2"

在上面的代码中,Map对象会正确地将两个相同字符串内容的键视为同一个键,因此通过map.get方法可以正确地获取到相应的值。

总结来说,当我们在JavaScript和AppScript中使用唯一的字符串作为键时,由于键是基于对象引用而不仅仅是字符串内容,所以会出现代码行为类似于字典中有重复键的情况。为了避免这个问题,我们可以使用Map对象来确保使用唯一的字符串键时不会出现重复键的行为。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用简单方法学习ECMAScript 6

这是否意味着现有的Javascript代码不久就将变得不可用了? 并非如此!如果是那样的话,对整个网站将是巨大损失!Javascript一直都是向后兼容。...Babeljs将会将ES6语法转换为ES5,这样现有的浏览器就可以解释我们代码了,就好像我们一开始就是用ES5编写一样。这是不是很酷?让我们来看看所有这一套是如何安装,然后开始编写代码。...Browserify使你能在独立Javascript文件中编写更加模块化代码,然后将它们打包,最后让你html页面只需引用一个Javascript文件。...ES5中,我们以前会使用两个不同对无二字符串来定义常量。我们会不得不依赖于字符串!但众所周知,字符串并不具备唯一性。...但是,这里只是想解释迭代协议是什么,使概念更清晰,并且引入关于它ES6新特性。? 通过迭代协议接收数据语言构造: // 解构实际上是在做迭代工作(重复工作)来从数组中提取数据。

1.8K41

JavaScript engine基础: Shapes and Inline Caches

事实证明,所有主要引擎实现方式都非常相似。 ECMAScript 规范基本上将所有对象都定义为字典字典字符串映射到property attributes。...JavaScript 对数组定义与对象类似。例如,包括数组索引在内所有都明确表示为字符串。数组中第一个元素存储 "0 "下。...假设我们有一个具有 x 和 y 属性对象,它使用了我们之前讨论过字典数据结构:它包含字符串形式,这些键指向各自属性。...如果我们假设以后会看到更多具有这种形状对象,那么将包含属性名称和属性完整字典存储 JSObject 本身就会造成浪费,因为所有具有相同形状对象都会重复使用这些属性名称。...图片 即使只有一个数组元素具有非默认属性,整个数组后备存储也会进入这种缓慢而低效模式。避免在数组索引上使用 Object.defineProperty!(不知道为什么要这么做。

22410

Python入门到放弃 | 超简单 跟我学(九)

我们可以通过一堆方括号中指定项位置来访问元组中项(元素),就像我们访问列表中一样。我们称之为 索引 操作符。...字典 字典就像是一个地址簿,只要知道一个人名字,你就可以找到他 / 她地址或联系方式,即,我们将 (名字)与 值 (详细信息)相关联。注意,必须是唯一!...就好比是,如果有两个人重名,那就无法找到正确详细信息一样。 注意,对于字典,你只能使用不可变对象(比如字符串),但是对于字典值,不可变对象或者可变对象都可以使用。...我们可以添加新键值对,只需要直接使用索引操作符访问一个并为其赋值,就像我们在上面的例子中对 Guido(字典一个操作一样。 我们可以使用 in 操作符检查键值对是否存在。...关于 dict 类方法清单,请参阅 help(dict) 。 关键字参数和字典 如果你函数中使用了关键字参数,那么其实你已经使用了字典

63720

统计师Python日记【第1天:谁来给我讲讲Python?】

既然都是编程,为什么不学一个彻底编程语言呢。而且今后和CTP等交易平台对接的话,matlab无能为力了,到时候再学python岂不是晚了。”...三、容器 1、什么是容器 开始学Python时,被它数据结构,什么字典、序列、元组等等搞很混乱,估计有跟我一样初学者,所以我梳理了一下留存: 首先要从容器说起,Python中有一种名为容器数据结构...序列重复n遍 成员资格是干嘛?...' 字符串方法还有很多,需要时候百度之OK。...': 'shushuo'} —————————————— (2)基本操作 字典基本行为与列表很多地方都相似(很多地方说与序列相似,这里还是觉得是与序列中列表相似,还记得那张图吧),下面的例子以序列

1.3K71

终极版全栈工程师学习路线图

HTTP & REST HTTP 是应用于互联网一项无状态应用协议 —— 它规范了客户端连接到服务器行为(比如 JavaScript 代码通过 AJAX 请求后端服务器中运行代码就是采用 HTTP...但或许是多年各种不同应用和网站工作经验,使他学习到如何最有效架构和设计应用(包括学习其他重要事项),并且开发过程中能看清“全局”。...基本算法和数据结构 这个话题在开发世界中有点两极分化,因为有些开发人员认为 Web 开发中不应该如此重视计算机科学主题诸如树遍历、排序、算法分析、矩阵操纵等。...有人说谷歌前端工程师面试: 也就是说,正如 Ryan McGrath 所提到,我们前端(FE)工程师要有一个坚实计算机科学(CS)背景,就像我们所有的工程师一样。...这个数据结构构成了 JavaScript对象(Python 中字典,Ruby 中哈希)基础。 理解树和图作为数据结构有何益处。

5.3K101

手把手教你造轮子:这个价值100万短网址微服务,送给你

使用,找到对应值,重定向进行访问,完成了整个流程。 短网址算法 短网址一般结构,比如新浪 SwuTjn,其中后端一段6位字符串,就是用来唯一标记一条记录ID。...因此本文使用第一种算法生成ID。 工具准备 分析短网址特性,包含以下项目: 唯一性:需要全局唯一 时效性:需要有过期时间 目标网址唯一,如果重复,则自动返回既有的。...3 - 实现POST路由方法:add 本函数用于接收form表单数据,生成一个全局唯一 hash ,作为,存入redis,设置值和过期时间。 代码如下: ?...本段我们使用了一个 getCounter 函数,这是设置redis内,将其每次请求创建时候,自增+1,可保证无重复。...核心函数使用helper包管理,经过测试,实现了短网址功能。 以上代码本地测试通过,也可部署到线上服务器对外开发端口,提供服务,效果是一样

55820

你了解 Typescript 吗

没了这些工具,修改代码恐惧将会导致该代码一个半只读(semi-read-only)状态, 并且使大规模重构变得极具风险,同时消耗巨大资金。 2. TypeScript 使抽象概念明确。...,每行代码都能记得,每个变量都知道是什么。...不管我们使用怎样编辑器,都能有很好自动补全功能、导航工具。 接手相互代码,能第一眼就能知道各个变量类型,模块大致作用等。...结束语 很多时候,当我们维护不同重量级应用,或是不同场景中使用应用时候,面对架构选择往往是不一样。...就像我很小页面里使用redux会觉得繁琐,在数据类型不多对象或接口中使用typescript会觉得没啥效果一样,个人还是认为,好架构能遇见拓展性同时,不过度设计,恰到好处才是最棒

5.6K10

学Java到底学什么

它是模块化且可重复使用。 Java中函数名称以小写字母开头,其后单词首字母大写。...连接数据库 为了使我们Java代码连接到数据库,我们需要一个JDBC驱动程序(与我们car Driver不同)。不同数据库具有不同驱动程序。...这些通常是使用JavaScript客户端完成,但可以禁用JavaScript。作为开发人员,我们也需要在我们这边进行验证。...ArrayIndexOutOfBoundsException:当我们尝试访问超出列表大小元素时 Java中有许多此类经过检查和未经检查异常,对于健壮代码,您需要了解这些异常。...线程行为有时会有所不同,但是某个时候我们都有情绪波动,不是吗?如果处理得当,线程就像我一样总是处于最佳状态。 例如,您正在尝试预订出租车。

93531

前端面试必备ES6全方位总结

为了方便查看学习,做了思维导图,如下图所示: ESMAScript概述 ECMAScript是一种脚本程序设计语言,被称为JavaScript或是JScript。...为什么会添加这个块级作用域,就得了解ES5没有块级作用域时出现问题。 场景一是内层变量可能会覆盖外层变量。 场景二是if或者是for循环中声明变量会泄漏成为全局变量。...const命令声明常量只能在声明位置后面使用。 const声明常量,与let一样不可重复声明。 变量解构赋值 ES6中可以从数组和对象中提取值,对变量进行赋值,称为解构赋值。...'] ]); map.size // 2 操作方法: set(key, value):向字典中添加新元素 get(key):通过查找特定数值并返回 has(key):判断字典中是否存在key...entries():返回所有成员迭代器 forEach():遍历字典所有成员 字典(Map) 集合 与 字典 区别: 共同点:集合、字典 可以储存不重复值 不同点:集合 是以 [value,

1.2K30

【学习】数据分析师Python日记-第1天:谁来给我讲讲Python?

二、安装与熟悉 1、安装 2、熟悉 三、容器 1、什么是容器 2、序列一些通用操作 3、列表操作 4、字符串操作 5、字典操作 日记小结 一、为什么学Python?...既然都是编程,为什么不学一个彻底编程语言呢。而且今后和CTP等交易平台对接的话,matlab无能为力了,到时候再学python岂不是晚了。”...三、容器 1、什么是容器开始学Python时,被它数据结构,什么字典、序列、元组等等搞很混乱,估计有跟我一样初学者,所以我梳理了一下留存: 首先要从容器说起,Python中有一种名为容器数据结构...,以b='hello'为例: 字符串方法还有很多,需要时候百度之OK。...'name': 'shushuo'} —————————————— (2)基本操作 字典基本行为与列表很多地方都相似(很多地方说与序列相似,这里还是觉得是与序列中列表相似,还记得那张图吧),下面的例子以序列

66390

关于python字典类型最疯狂表达方式

“布尔类型是整数类型一个子类型,几乎所有的上下文环境中布尔值行为类似于值0和1,例外是当转换为字符串时,会分别将字符串”False“或”True“返回。...(也请建议你同事别这样做) Anyway,让我们回过来看我们字典表达式。 python而言, , 和 都表示相同字典。当解释器计算字典表达式时,它会重复覆盖 值。...这就解释了为什么最终产生字典只包含一个。...经过对cpython解释器源代码一些模式研究,知道了,当一个新值与字典关联时候,python字典不会更新对象本身: 当然这个作为性能优化来说是有意义 --- 如果被认为是相同,那么为什么要花时间更新原来...最开始例子中,你也可以看到最初 对象一直都没有被替换。因此,字典字符串表示仍然打印为以 为(而不是1或1.0)。

1.1K100

万字长文爆肝Python基础入门【第二弹、超详细数据类型总结】

说明:转义字符虽然书写时使用了两个字符,但是程序中它只是一个字符。...这就好比现实中一本字典一样,通过拼音或偏旁来映射一个具体字词,以此来实现字词快速查找,而这个拼音或偏旁相当于 Python 字典,而字词相当于 Python 字典值,它们字典中是映射关系...7、什么时候用集合 集合非常重要一个特性是元素无重复,每个元素都是唯一重复元素将被自动剔除(去重)。 所以如果我们需要存放一系列数据,并且不希望其中出现重复,那么就可以使用集合。...字典需要是不可变类型,如数字,字符串和元组。字典值可以是任意类型。字典本身是可变,所以可向其中添加、修改、删除键值对。 集合是一个用于存放批量元素序列。它不是有序,且元素不会有重复。...集合也是可变,我们可以向其中添加、删除、修改元素。 写在最后 关于Python中常用数据类型总结先和大家总结分享到这里,其中有不足或不懂地方欢迎大家评论区留言指出。

1.2K10

工具 | Python集合使用详解

我们前面说过用索引访问元素,如果访问索引2,将会得到元素3。 ? 上面的代码为我们复制了元素,元素还在列表中,列表长度不会受到影响。...mappings mapping也是内置类型,只字典中使用。字典/值对应,不同于列表,我们不用序号索引,代之字典(key)。...当从字典中取元素时,序号不可用了,那我们该想到。如果要item2,我们这样做: ? 和列表一样,可以查看字典长度: ? 改变item2值,可以直接给他赋值: ? 增加元素也是直接赋值: ?...item62现在存在于字典了,字典长度加1。 根据可以删除字典元素: ? 前面提到字典/值成对出现,如果我们只要可以这样做: ? 访问值也是同样方法: ?...因为set只能包含唯一元素,所以重复6被移除了。从已有数据创建唯一元素集合,set()是个非常好方法。 如果试图让移除6回来,它是不会理会: ?

1.3K50

Python中基础数据类型(Set集合)及其常用用法简析

不同元素组成(没有重复元素) 无序 集合中元素必须是不可变类型 # 定义一个集合 set1 = {1, 2, 3} print(set1, type(set1)) # 字符串转换为set集合...中set(集合),其实也是存储数据一个容器,列表,元组,字典这三种数据类型也是存储数据,其中列表和元组几乎一样唯一区别就是元组无法更改(准确来说是元组第一层索引无法更改),举个栗子: tu =...举个栗子,就好像我们要在字典所有字中找到某个字一样(假如没有根据拼音排序过那种),那么我们一般就需要从第一个字开始寻找,一直到寻找到这个字。...Python中字典也是这样子机制,存入key按照某种规律已经排好序了,寻找也是很快,需要时候直接通过定位到相应值,所以键只能是唯一字典适合存存储大量需要查询数据。...集合适合存储值只能唯一数据(去重)。 超大号重点 一个好数据结构使程序事半功倍 ------------------- End -------------------

1.4K20

推导式和Lambda表达式

三、字典推导式 学习了列表推导式以后,学习字典推导式没什么困难了,字典推导式语法差不多,只不过我们使用”{}”产生字典而已,唯一要注意就是字典中有和值两个关键属性,仿似列表推导式,那么其基本语法可以被写作这样...in list_b} print(dict_a) #输出:{'爱': 'Python学堂'} 上述代码块1中使用了Python内置函数enumerate()。...有基础小伙伴一看知道,enumerate()可将一个可遍历数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据下标和数据。...代码块2最后生成结果是一个字典(或常使用生成Json数据),第二种字典推导式是非常常见,大家要掌握好。...五、Lambda表达式 Java 和Python中均提供了一个Lambda表达式,这个表达式又被称为匿名函数,是现代各种编程语言争相引入一种语法,它设计精巧,很大程度上可以精简代码,就像推导式一样

95085

完全搞懂 Javascript...

这些小点使我们能够编写更加优雅和简洁代码本文中将会解释这三个点工作原理,并展示最常见例子。...我们也可以使用 map 操作符实现数组复制并进行身份映射。 唯一数组 如果我们想从数组中筛选出重复元素,那么最简单解决方案是什么? Set 对象仅存储唯一元素,并且可以用数组填充。...它们行为也有点像数组,只是没有对应方法。...层次结构中更深层次将是相同引用。 将字符串拆分为字符 最后是字符串。你可以用展开运算符把字符串拆分为字符。当然,如果你用空字符串调用 split 方法也是一样。...如你所见,ES6 不仅使编写代码效率更高,而且还引入了一些有趣方法来解决长期存在问题。现在所有主流浏览器都支持新语法。在你阅读本文时,就可以浏览器控制台中尝试上述所有例子。

68120

带你认识 flask ajax 异步请求

由于做这种分析有点费时,不想每次把帖子呈现给页面时重复这项工作。要做提交时为帖子设置源语言。检测到语言将被存储post表中。...如果得到任何其他代码知道发生了错误,所以在这种情况下,返回一个错误字符串。...将结果合并到单个text下字典中,字典作为参数传递给Flaskjsonify()函数,该函数将字典转换为JSON格式有效载荷。 jsonify()返回值是将被发送回客户端HTTP响应。...在此上下文中运行JavaScript代码可以更改DOM以触发页面中更改 我们首先需要讨论是,浏览器中运行JavaScript代码如何获取需要发送到服务器中运行翻译函数三个参数。...成功回调中,所需要做就是使用翻译后文本调用$(destElem).text(),该文本字典中text下。

3.8K20

精选26个Python实用技巧,想秀技能先Get这份技术列表!

本文中,将按照首字母从 A~Z 顺序分享其中一些内容。 这些技巧中大多数是日常工作中使用或者偶然发现。其中有一些,是浏览 Python 标准库时发现。...使用命令行: 当你通过交互方式来运行 Python,并动态地探索你正在使用对象和模块时,这一功能非常有用了。...你也可以使用它来写自编文档代码。 ▌Jedi Jedi 库是一个自动完成和代码分析库。它能够使编写代码更为快速、更为高效。...有没有想过为什么 Python 允许使用 + 运算符来添加数字和连接字符串?这就是运算符重载功劳。 你可以按照自己特定方式定义使用 Python 标准运算符符号对象。...在给定集合中找到重复概率非常低。即使有一万亿 uuid,重复存在概率也远远小于十亿分之一。 用两行代码实现了,还是很不错

65350
领券