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

在immutable.js setIn([])函数中动态设置路径

在immutable.js中,setIn([])函数用于动态设置路径。它是immutable.js库中的一个方法,用于在不改变原始数据的情况下,创建一个新的immutable对象,并在指定路径上设置新的值。

具体来说,setIn([])函数接受一个路径数组作为参数,路径数组表示要设置的值的位置。路径数组中的每个元素都是一个字符串或数字,表示对象的属性名或数组的索引。例如,路径数组"a", 0, "b"表示要设置的值位于对象a的第一个元素的属性b中。

使用setIn([])函数时,需要注意以下几点:

  1. setIn([])函数返回一个新的immutable对象,而不是修改原始对象。这是immutable.js库的核心特性之一,它确保数据的不可变性,从而提高性能和可维护性。
  2. 如果路径数组中的某个属性或索引不存在,setIn([])函数会自动创建相应的属性或索引。这意味着可以在路径中设置嵌套的属性或索引,无需手动创建中间的对象或数组。
  3. setIn([])函数可以用于任何immutable对象,包括Map、List和Record等。它适用于各种数据结构的更新操作。

下面是一个示例代码,演示了如何使用setIn([])函数动态设置路径:

代码语言:javascript
复制
import { Map } from 'immutable';

const data = Map({
  a: [
    { b: 1 },
    { c: 2 }
  ]
});

const newData = data.setIn(['a', 0, 'b'], 3);
console.log(newData.toJS());
// 输出: { a: [ { b: 3 }, { c: 2 } ] }

在上面的示例中,我们首先创建了一个immutable Map对象data,其中包含一个属性a,它是一个数组。然后,我们使用setIn([])函数将路径'a', 0, 'b'上的值设置为3。最后,我们通过调用toJS()方法将immutable对象转换为普通的JavaScript对象,并打印出结果。

推荐的腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行评估。

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

相关·内容

JavaScript 的 不变性(Immutability)

不变性(Immutability)是函数式编程的核心原理,也有很多面向对象的程序提供了这一特性。...这听起来很荒唐,但是我们一直使用对象和数组。 In JavaScript, Mutability Abounds JavaScript,字符串和数字是不可改变的设计。...整个事情都是使用JavaScript对象和数组初始化的,然后通过immutable.js的fromJS函数永久化: function createGame(options) { return Immutable.fromJS...setIn是空安全的,如果的任何部分不存在,它将填充空对象。扫雷板的情况下,这是不可取的,因为缺少的瓦片意味着我们试图板外显示瓦片。...在实践,使用不可变数据许多情况下会增加应用程序的整体性能,即使孤立的某些操作变得更加昂贵。 改进变更追踪 任何UI框架中最难的任务之一是变更跟踪。

1K20
  • Python程序设置函数最大递归深度

    函数调用时,为了保证能够正确返回,必须进行保存现场和恢复现场,也就是被调函数结束后能够回到主调函数离开时的位置然后继续执行主调函数的代码。...这些现场或上下文信息保存在线程栈,而线程栈的大小是有限的。 对于函数递归调用,会将大量的上下文信息入栈,如果递归深度过大,会导致线程栈空间不足而崩溃。...Python,为了防止栈崩溃,默认递归深度是有限的(某些第三方开发环境可能略有不同)。下图是IDLE开发环境的运行结果: ? 下图是Jupyter Notebook的运行结果: ?...因此,在编写递归函数时,应注意递归深度不要太大,例如下面计算组合数的代码: ? 如果确实需要很深的递归深度,可以使用sys模块的setrecursionlimit()函数修改默认的最大深度限制。

    3K20

    Linux系统设置动态地址进行网络访问

    Linux 系统,配置动态地址可以帮助我们实现更安全、匿名或绕过某些限制的网络访问。...本文将介绍几种常用的方法来配置和使用代理服务器, Linux 环境下轻松实现高效且可靠地通过HTTP进行网络访问。...图片1、使用环境变量设置 HTTP/HTTPS命令行界面执行以下命令即可设置HTTP/HTTPS协议所需的环境变量:export http_proxy=http://proxy_server:portexport...5、配置系统范围内全局ip编辑 /etc/environment 文件,文件末尾添加以下内容以设置系统级别的全局 HTTP/HTTPS 代理:http_proxy="http://proxy_server...以上是几种常见且有效的方法来 Linux 系统配置和使用代理服务器进行网络访问。根据不同需求选择合适的方式,并确保遵守相关法律法规及目标网站政策。

    33730

    React 组件优化方案

    1. shouldComponentUpdate 如果你知道什么情况下你的组件不需要更新,你可以 shouldComponentUpdate 返回 false 来跳过整个渲染过程。...3. useEffect useEffect React Hooks 的一个钩子函数。effect hooks 可以让你在函数组件执行副作用操作。 useEffect 函数很强大。...7. lazy/Suspense React.lazy 函数能让你像渲染常规组件一样处理动态引入的组件。而 Suspense 是一个组件,这两个东西一般是配合使用的。... webpack 如果做文件打包,打包出来的文件可能会很大。而打包好的文件可能有一些代码并不需要每次加载页面时就请求它(或说使用到它),比如当用户点击按钮时才会运行某一些代码。...set 方法设置新的值后,会返回一个全新的 immutable data。

    3.2K20

    Vue.js 通过计算属性动态设置属性值

    不过,现在的列表项看起来有点乱,各种语言的框架随机分布列表项,不便识别,如果我们想要将同一个语言的 Web 框架都聚集在一起,该怎么做?...排序函数 我们可以 addFramework 函数追加一段排序函数对 frameworks 数组按照 language 字段进行升序排序: methods: { addFramework()...计算属性 计算属性从字面意义上理解,就是经过计算后的属性,计算属性可以通过函数来定义,函数是该属性的计算逻辑,你可以 HTML 视图中像调用普通属性一样调用计算属性,Vue 初次访问该计算属性时...计算属性定义 Vue 实例的 computed 属性,我们将上述排序逻辑通过计算属性 sortedFrameworks 来实现,对应的实现代码如下: methods: { addFramework...} else { return 0; } }); } } 注意在 sortedFrameworks 计算属性的函数

    12.7K50

    Immutable.js 简记

    前言:之前的项目中,遇到redux的深层嵌套问题时,直接使用深拷贝的库对state进行深拷贝再操作并返回修改后的新的state,一直觉得很不优雅和低效。...下一个项目中打算在redux中使用Immutable.js。在此对一些API进行简单记录。日后用到其它也会慢慢补充 Immutable的中文翻译就是不可变,所以。...寒假的时候再看看这个库的源码吧, 文档地址 Immutable的一些数据结构 Map 无序键值对(有点像js的Object) 设置 set (对应delete、deleteAll)/ setIn...深层设置数据 //浅层 update 更新数据/updateIn 深层更新数据 merge\mergeWith 两个Map的合并 mergeWith 可用于解决冲突 mergeDeep 深层合并 /...map toJS 深转化js对象 toJSON 浅转化js toArray 浅转化 toObject 浅转化 读取 get/getIn List 类似于js的数组 OrderedMap 有序键值对(按照设置的顺序

    1.1K10

    应用程序设计:动态如何调用外部函数

    不论是 Windows 系统,还是 Unix 系列平台上,到处都能见到我的身影,因为我能为大家节省很多资源啊,资源就是人民币!...已经按照要求加了 func_in_main 这个函数了啊?! ? 这个傻X张三,对,你确实是 main.c 中加了这个函数,但是你仅仅是加在你的可执行程序的,但是我却压根就看不到这个函数啊!.../main func_in_lib is called func_in_main b = 2 也就是说,我的动态库文件,正确的找到了外部其他模块函数地址,并且愉快的执行成功了!...既然你不想提供,那我就满足你: 首先,动态库中提供一个默认的函数实现(func_in_main_def); 然后,再提供一个专门的注册函数(register_func),如果外部模块想提供 func_in_main...不过,如果如果有一天,你改变了注意,又想提供这个函数了,那么你就要通过动态的 register_func 函数,把你的函数注册进来。 Have you got it?赶紧再去试一下! ?

    2.7K20

    immutable.js 简介

    使用 ES6 的 Generator 函数,可以轻松实现一个惰性计算 9. Record Record 表现上类似于 ES6 的 Class,但在某些细节上还有所不同。...通过 Record() 可以创建一个新的 Record 类,使用该类可以创建具体的 Record 实例,该实例包含在 Record() 构造函数声明的所有属性和默认值。...React React 官方文档的《Advanced Performance》 一节,专门对 React 的性能瓶颈、优化方式做了详细的解析。...flag 对脏数据进行检查,但冗杂的代码是让人头疼 seamless-immutable 与 Immutable.js 学院派的风格不同, seamless-immutable 并没有实现完整的 Persistent...之前已经写文章熟悉过 Lodash 这一工具库,Immutable 内部也封装了诸多常用的数据操作函数,所以如果让我来选择的话, React 技术栈我会更偏爱 Immutable。

    1.6K10

    【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态函数 )

    文章目录 一、 Visual Studio 2019 创建 " 控制台应用 " 程序 二、拷贝 xxx.lib、xxx.dll、xxx.h 到源码路径 三、导入 xxx.h 头文件 四、配置动态库引用...五、调用动态函数 一、 Visual Studio 2019 创建 " 控制台应用 " 程序 ---- 欢迎界面 , 选择 " 创建新项目 " , 选择创建 " 控制台应用 " 项目类型...动态库的 描述文件 xxx.lib , 动态库文件 xxx.dll , 动态库头文件 xxx.h , 拷贝到 项目的源码路径 , 注意就是主函数源码所在的目录 ; 三、导入 xxx.h 头文件 --...头文件 出现在 源文件 ; 将 xxx.h 头文件手动拖动到 " 头文件 " ; 四、配置动态库引用 ---- 右键点击 " 解决方案 " , 弹出的菜单 , 选择 " 属性 " ,...选择 " 配置属性 -> 链接器 -> 输入 -> 附加依赖项 " 的 " 编辑 " 选项 , 将 xxx.lib 选项 , 拷贝到此处 ; 五、调用动态函数 导入头文件 , 即可调用动态函数

    2.1K30

    immutable.js 比原生 JavaScript 快得多

    本文中我们会讲到一个常见情形immutable.js比 javascript会快得多:不修改原数组的情况下向数组添加元素。... javascript要做这件事情,唯一的方法是先拷贝一个数组,再向其中添加元素。而 immutable.js的 push的返回一个添加了新元素的新列表;而且,这非常快。 ?...不可变列表对决 JavaScript 数组 首先,浏览器中加载 immutable.js: Object.keys(Immutable) 这里有一个计算代码执行时间的 benchmark函数: function...我的计算机上, immutable.js的 push比原生 javascript的 push快约 100 倍。 注意,immutable.js列表添加元素时,列表本身并未改变。...长按二维码关注京程一灯,阅读更多技术文章和业界动态

    1K30

    react项目架构之路初探

    被创建时调用,而 Sagas只会在应用启动时调用 redux-thunk中间件可以让action创建函数先不返回一个action对象,而是返回一个函数函数传递两个参数(dispatch,getState...),函数体内进行业务逻辑的封装 redux-thunk的缺点: action的形式不统一 ,异步操作太分散,分散了各个action redux-saga本质是一个可以自执行的generator。...store = createStore(reducers, compose( composeEnhancers(applyMiddleware(sagaMiddleware)) )) // 动态执行...代码最后的put 执行到reducer设置state中分页数据和每页的返回数据 export function * init () { while (true) { const action...table.js文件 通过setIn方法 (immutable语法) 改变state的数据 进而更新dom export const setIn = (state = initialState, action

    2.5K10

    深入探究immutable.js的实现机制(二)

    树高压缩 假设我们有一个 2 叉 Vector Trie,现在存了一个值,key为110(二进制形式), 它会被存到0 1 1这条路径下,如下图: ?...注意这个数组的元素还是按照“假想数组”的顺序排列的,这样我们若要取“假想数组”中下标为 i 的元素时,首先是判断该位置有没有值,若有,下一步就是得到它之前有几个元素,即在二进制数里第 i 位之前有多少位为...它涉及到 Immutable.js 的可变数据结构。 Transient 其实可以说 Immutable.js 的数据结构有两种形态,“不可变”和“可变”。...里很多方法都使用了withMutations构造临时的可变数据结构来提高效率,比如 Map 的map、deleteAll方法以及 Map 的构造函数。...我发现 Immutable.js 的 hash 函数对abc和bCc的 hash 结果都是 96354,同一个 map 里用这两个 key 就会造成 hash 冲突,我们把这个 map log 出来如下

    1K20

    你有没有觉得邮件发送人固定配置yml文件是不妥当的呢?SpringBoot 动态设置邮件发送人

    明月当天,不知道你有没有思念的人 前言 之前其实已经写过SpringBoot异步发送邮件,但是今天一个小项目中要用到发送邮件时,我突然觉得邮件发送人只有一个,并且固定写在yml文件,就是非常的不妥当...,就想着怎么整成一个动态的。...465端口(SMTPS)︰它是SMTPS协议服务所使用的其中一个端口,它在邮件的传输过程是加密传输(SSL/TLS)的,相比于SMTP协议攻击者无法获得邮件内容,邮件一开始就被保护了起来。...* 思路:从数据库拿到所有可用的邮件发送人,然后封装起来,之后发送邮件时,再进行随机的选择即可。 * 另外一种方式就是这是动态的。.../** * 初始化操作 * 目前只定义了动态设置邮件发送人的操作 * @Author: crush * @Date: 2021-11-26 19:51 * version 1.0 */ @Slf4j

    1.2K40

    React+Redux的一个简单开发实例

    thunk函数具有如下的签名 (dispatch, getState) => { //函数体内可以使用 dispatch 方法来发射其他 action //函数体内可以使用 getState...其开发的内容很明确清晰,就是开发一类函数,接受action 和 当前的state,返回新的state。 技术要求:要求对js比较熟悉,需要会使用 immutable.js 这个数据静态化库。...isPicking 设置为ture, 表明正在摘苹果,同时禁止完成前再发送摘苹果请求 newAppleId:表示新苹果的编号 apples:是苹果列表数组,存放着苹果对象,苹果对象的结构apples...这种保持数据不变(Persistent data structure)的方式函数式编程(Functional programming)非常常见。我们的redux应用里,其意义在于: 1....fromJS(state).setIn(['apples',action.payload,'isEaten'], true).toJS(); ...

    1.4K20

    Mock System.in和检查System.out

    下面提供一种方法,可以测试过程设置System.in和System.out内容,很好地解决了模拟用户输入和检查输出的问题。...throw new RuntimeException(ex); } is = new ByteArrayInputStream(input.getBytes()); System.setIn...(is); } 在这里设置了System.out和System.in,因此我们可以执行后完全获得输出,并且这次不需要手动输入,因为的语句中Scanner scanner = new Scanner...同样,输出将不会在控制台中打印,而是会累积到ByteArrayOutputStream,随时可以访问。 如果想恢复System.in和System.out我们该怎么办?...(irig); } 基本上,它会保存原始对象和内容,in并且out需要恢复时,只需清楚stream并将原来的其放回原处,然后一切将照常进行。

    88430

    深入探究Immutable.js的实现机制(一)

    网上已经有很多文章简单介绍了 Immutable.js 的原理,但大多浅尝辄止,针对 Clojure 或 Go 持久化数据结构实现的文章倒是有一些。...Immutable.js 部分参考了 Clojure 的PersistentVector的实现方式,并有所优化和取舍,该系列第一篇的部分内容也是基于它,想了解的可以阅读?...Immutable.js 实现了一个?hash函数,可以把一个值转换成相应数字。...Number ,只算这些值的话总大小也有17g了,前端一般是远不需要操作这个量级的数据的),这样就可以把查找的时间复杂度当做是“O(log32 232)”,差不多就是“O(log 7)”,所以我们可以认为实际运用...第二篇里会介绍进一步优化后的不可变数据结构—— HAMT (“压缩”空间占用),以及不可变数据结构实现“临时”的可变结构—— Transient ,还有老生常谈的对于 hash 冲突的解决方式。

    1.4K20
    领券