繁体   English   中英

在Immutable.js Map中查找嵌套对象的最佳方法

[英]best way to find nested object in Immutable.js Map

我有一个Immutable Map结构,它将presentationId映射到slideId到具有幻灯片属性的地图,其中有'打开',如下所示:

//maps a chapterId to a pageId
var map = Map(fromJS({
    123: {
        22: {
            slideId: 22,
            presentationId: 123,
            opened: 1
        }
          23: {
            slideId: 23,
            presentationId: 123,
            opened: 0
        }
    }
}));

抓取/找到已打开的幻灯片=== 1的最佳方法是什么?

我有这个,这是有效的,但我认为必须有更好/更好的方式与更少的代码行?

var openSlide;
map.some((slideMap, presentationId) => {
    openSlide = slideMap.find(slide => {
        return parseInt(slide.get('opened')) === 1;
    });
    return openSlide ? true : false;
});

我认为更好的方法是使用.reduce ,这要归功于你不需要有可变的外部范围,如果涉及可读性,那就更好了。 相反,在这种情况下find some会更好,因为你不需要将你找到的对象解析为boolean它已经被解析了。

const openSlide = map.reduce((acc, slideMap) => {
  return acc || slideMap.some(slide => {
    return parseInt(slide.get('opened')) === 1
  })
}, false)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM