在 Immutable.js 中获取嵌套值

2024-01-03

根据这里的文档:https://facebook.github.io/immutable-js/docs/#/Map/getIn https://facebook.github.io/immutable-js/docs/#/Map/getIn

我应该能够通过提供一个数组来获取深层嵌套的值keyPath争论。这就是我所做的,但是我得到了undefined作为返回值。

http://jsfiddle.net/srxv4mwu/ http://jsfiddle.net/srxv4mwu/

var obj = Immutable.Map({categories: {1: 'a', 2: 'b'}});
var output = obj.getIn(['categories', 1]);
alert(output);

我究竟做错了什么?


映射只是键和值的集合。你所拥有的是一张带有钥匙的地图categories,以及值{1: 'a', 2: 'b'}。该值不会仅仅因为您将其放置在另一个映射中而自动成为不可变映射。

现在getIn()函数只会“看到”其他 Immutable.js 映射。你所拥有的是一个常规的 ol' javascript 对象。如果你只是想获得1值,你可以这样做:

var obj = Immutable.Map({categories: {1: 'a', 2: 'b'}});
var output = obj.getIn(["categories"])[1];
alert(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>

如果你想要categories集合也是一个地图,您必须明确定义它。另外,正如阿米特指出的那样,您需要将字符串与getIn()功能。

var obj = Immutable.Map({
	categories: Immutable.Map({
		1: 'a',
		2: 'b'
	})
});
var output = obj.getIn(['categories', '1']);
alert(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>

上面的代码会返回'a'.

如果您有许多嵌套地图,那么执行如下操作可能会更方便。

var obj = Immutable.fromJS({
	categories: {
		1: 'a',
		2: 'b'
	}
});
var output = obj.getIn(['categories', '1']);
alert(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>

The fromJs()函数会自动将任何嵌套对象转换为地图或列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Immutable.js 中获取嵌套值 的相关文章

随机推荐

  • 如何使用 OpenCV 消除图像中的径向畸变?

    我想我应该使用cv remap消除扭曲但无法弄清楚地图上的内容const Mat map1 const Mat map2应该是为了实现这一点 我应该使用cv initUndistortRectifyMap找出值 如果是这样 我真的很感激一个
  • 下载 Google Play 服务 JAR

    我已经很长时间没有接触Android了 最近我必须为Appcelerator 开发一个Android 模块 我需要使用 Google Play 服务 JAR 所在的 extras 文件夹下有一个 经过一番搜索 我发现还有较小尺寸的单个 JA
  • 访问事件闭包中的可变变量

    我正在尝试使用捕鼠器 http craig is killing miceJavascript 插件以类似的方式处理一些击键 所以我想将它们编码如下 var keys b i u for var i 0 i lt 3 i var iKey
  • 如何使用 CMake + msbuild 构建所有配置

    我有一个生成 VS2015 解决方案文件 MyApp sln 的 CMake 文件 我为每个配置分别使用以下命令构建 MyApp sln msbuild MyApp sln property Configuration Debug msbu
  • 如何从 ASP.NET Core 中的实体框架中的数据库更新 VS 2019 中的模型

    到 VS 2019 我创建了一个 API 项目 首先是数据库 一切都运行良好 现在我在数据库中进行了一些更改 例如添加新表和一些属性并修改其他属性的数据类型等等 问题是如何更新模型以匹配 SQL 中的数据库 这是我的项目的屏幕截图 尝试通过
  • 让基本的 socket.io 示例正常工作

    我什至无法运行非常基本的 socket io 示例 例如其网站欢迎页面上的第一个示例 var io require socket io listen 80 io sockets on connection function socket s
  • Reporting Services:具有父子孙的业务对象数据源

    如何使用 POCO 自定义业务对象创建具有父子孙关系的报表 public class Invoice public List
  • WPF - 检测转换器中的设计模式

    我有一个转换器 我希望能够在设计模式下将值更改为 Visibility Collapsed 没错 它忽略了 GetIsInDesignMode 另外 我通过依赖注入 棱镜 绑定虚拟机 转换器 public object Convert ob
  • war 文件中的可执行文件

    我们希望发布一些帮助程序脚本 shell 脚本 作为应用程序战争的一部分 不幸的是 我们的构建系统 maven 似乎放弃了所有文件的权限 并且脚本最终没有设置可执行位 有可能这样做吗 war 格式支持可执行文件吗 如果是 如何告诉 Mave
  • 使用javascript在html上绘制矩形

    我知道有类似的问题here https stackoverflow com questions 14680690 draw rectangles and annotate webpage 但问题和答案都没有任何代码 我想做的就是将此功能移植
  • PercentRelativeLayout - 缺少布局宽度警告

    我正在尝试支持库中的 PercentRelativeLayout 并且the docs http developer android com reference android support percent PercentRelative
  • Ionic 2 使用 firebase 进行谷歌登录

    我在 firebase 身份验证和 google 提供商方面遇到了一些麻烦 我尝试使用谷歌提供商登录 这工作正常 但后来我想重定向到我的主页 但我遇到了问题 我有一个身份验证提供者 import Injectable from angula
  • Android 14 及更高版本是否可以使用 Java 8 功能Optional 和 Stream

    我想在当前的项目中使用选项和流 我已经进行了很多空检查和很多循环 不久前 我注意到Java 8中有Optional和Streams这样方便的类 我想使用它们 但我不能 因为我的项目的minSdk是14 是否可以使用Java 8功能适用于 A
  • 使用 Codable 序列化为 JSON 时 Swift 字符串转义

    我正在尝试按如下方式序列化我的对象 import Foundation struct User Codable let username String let profileURL String let user User username
  • 如何创建动态索引来获取元组的值?

    在 Python 中 我了解到可以通过动态索引检索元组值 data 1 2 3 4 data 0 for a in range len data print data a 输出 1 2 3 4 如何在 Rust 中做到这一点 我尝试过这样的
  • 将 CSS 和 JS 文件放置在 Mavenized Java Web 应用程序中的最佳位置?

    我在 Maven 中有一个遵循以下结构的 Web 应用程序 src main java resources webapp 最好将它放在主文件夹中 然后 Maven 插件会尝试移动它 或者我应该将它放在 webapp 文件夹中 为什么 如果不
  • PHP PDO MySQL 事务代码结构

    我正在尝试使用 PHP PDO 在 MySQL 中设置我的第一个事务 我只是有一个简单的问题 确定上一个查询是否成功的最佳方法是什么 这是我现在所拥有的 但我宁愿找到一种方法来使用 if 语句测试查询 这几乎是模拟代码 试图获得一个工作模型
  • 几天前创建的分支的 Git rebase

    我需要帮助来理解这种情况下的 git rebase 我查看了 10 天前某人创建的一个分支 我使用 git checkout b
  • 不使用 <<- 赋值的递归函数?

    有了向量 x 我需要在内部函数中递归地更改它 这是我使用的实现 lt lt 全局赋值运算符 outer lt function x lt rep 1 5 inner lt function i if i gt length x return
  • 在 Immutable.js 中获取嵌套值

    根据这里的文档 https facebook github io immutable js docs Map getIn https facebook github io immutable js docs Map getIn 我应该能够通