Javascript Immutable.JS Seq/lazy map性能最佳实践?
我喜欢在Preact中使用immutable.js。它们可以很好地协同工作,因为React/Preact的状态与容器的交互很差,除非容器是不可变的 我发现自己遇到了一种情况(;参见branch libp2p preact,source src/index.tsx;它是带有JSX的TypeScript)我有一个不可变的容器,里面装满了字符串,我需要将它们呈现为JSX。我通常的做法是创建一个JSX.Elements数组,并将它们内联到一个JSX节中。因此,在示例中,我有一个Javascript Immutable.JS Seq/lazy map性能最佳实践?,javascript,performance,immutable.js,Javascript,Performance,Immutable.js,我喜欢在Preact中使用immutable.js。它们可以很好地协同工作,因为React/Preact的状态与容器的交互很差,除非容器是不可变的 我发现自己遇到了一种情况(;参见branch libp2p preact,source src/index.tsx;它是带有JSX的TypeScript)我有一个不可变的容器,里面装满了字符串,我需要将它们呈现为JSX。我通常的做法是创建一个JSX.Elements数组,并将它们内联到一个JSX节中。因此,在示例中,我有一个OrderedSet用户列
OrderedSet用户列表
:
const users = userList.toArray().map(
s => <div className="Id">{s}</div>
)
return <div className="ListBox">
<div className="List">{users}</div>
</div>
不可变.OrderedSet
进行映射
const users = userList.toArray().map(s => <div>{s}</div>)
const users = userList.map(s => <div>{s}</div>).toArray()
const users = userList.toSeq().map(s => <div>{s}</div>).toArray()
(注意,Preact对于这个问题可能并不重要;重要的是我有一个不可变的标识符集合,我想将它转换为一个数组,每个元素上都有一个简单的映射fn。)事实是,你可以做得比你提到的三个选项都好。由于
OrderedSet
是一个iterable,并且您的目标是从中创建一个普通数组,因此可以使用ES6标准数组。from
函数及其第二个回调参数(映射器):
constusers=Array.from(userList,s=>{s})
事实是,你可以做得比你提到的三个选项都好。由于OrderedSet
是一个iterable,并且您的目标是从中创建一个普通数组,因此可以使用ES6标准数组。from
函数及其第二个回调参数(映射器):
constusers=Array.from(userList,s=>{s})
让我惊讶的是,.valueSeq().map((v)=>({v})).toArray()比数组快。从方法(在chrome中测试)到我惊讶的是,.valueSeq().map((v)=>({v})).toArray()比数组快。从方法(在chrome中测试)
const users = Array.from(userList, s => <div>{s}</div>)