Javascript 来自列表映射的不可变js生成列表
我有一个不可变的列表js映射。我想将它转换为每个键的第一个项的列表Javascript 来自列表映射的不可变js生成列表,javascript,immutable.js,Javascript,Immutable.js,我有一个不可变的列表js映射。我想将它转换为每个键的第一个项的列表 {keyA:[item1A,item2A,item3A],keyB:[item1B,item2B,item3B]} 到 当然,有一种方法可以用Immutable实现这一点,它甚至是一条线性语句。您只需使用toList()将映射转换为列表,然后使用map和/或filter即可 const myMapOfLists = fromJS( { item1: [{id: 1}, {id: 2}, {id: 3}],
{keyA:[item1A,item2A,item3A],keyB:[item1B,item2B,item3B]}
到
当然,有一种方法可以用Immutable实现这一点,它甚至是一条线性语句。您只需使用
toList()
将映射转换为列表
,然后使用map
和/或filter
即可
const myMapOfLists = fromJS(
{
item1: [{id: 1}, {id: 2}, {id: 3}],
item2: [{id: 4}, {id: 5}, {id: 6}],
item3: [{id: 7}, {id: 8}, {id: 9}],
}
);
const myNewList = myMapOfLists.toList().map(item => item.get(0));
// console.log(myNewList.toJS());
// => [{id: 1}, {id: 4}, {id: 7}];
请注意,此代码容易出错。例如,如果item2不是一个列表呢?通过使用Immutable的isList()
方法检查项目是否为列表,可以简单地避免这些问题
const myMapOfLists = fromJS(
{
item1: [{id: 1}, {id: 2}, {id: 3}],
item2: [{id: 4}, {id: 5}, {id: 6}],
item3: [{id: 7}, {id: 8}, {id: 9}],
}
);
const myNewList = myMapOfLists.toList().map(item => item.get(0));
// console.log(myNewList.toJS());
// => [{id: 1}, {id: 4}, {id: 7}];