Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自列表映射的不可变js生成列表_Javascript_Immutable.js - Fatal编程技术网

Javascript 来自列表映射的不可变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}],

我有一个不可变的列表js映射。我想将它转换为每个键的第一个项的列表

{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}];