Javascript 在Immutable.js映射中查找嵌套对象的最佳方法
我有一个不可变的映射结构,它将presentationId映射到slideId,再映射到具有幻灯片属性的映射,其中“已打开”,如下所示:Javascript 在Immutable.js映射中查找嵌套对象的最佳方法,javascript,nested,immutable.js,Javascript,Nested,Immutable.js,我有一个不可变的映射结构,它将presentationId映射到slideId,再映射到具有幻灯片属性的映射,其中“已打开”,如下所示: //maps a chapterId to a pageId var map = Map(fromJS({ 123: { 22: { slideId: 22, presentationId: 123, opened: 1 } 23
//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
会更好,因为您不需要将找到的对象解析为布尔值,因为它已经被解析了
const openSlide = map.reduce((acc, slideMap) => {
return acc || slideMap.some(slide => {
return parseInt(slide.get('opened')) === 1
})
}, false)