首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打破.map函数

如何打破.map函数
EN

Stack Overflow用户
提问于 2018-01-14 08:59:06
回答 3查看 35.8K关注 0票数 13

如何破坏.map函数?下面附有代码示例。我想打破看一旦索引达到5,因为我只想渲染5阿凡达到屏幕。

代码语言:javascript
复制
<View style={{ flexDirection: 'row', marginTop: 20, marginLeft: 30  }}>
    {
      peopleGroup.map((people, i) => {
        if(i<5) {
          return (
            <Avatar
              key={people.id}
              width={30}
              position='absolute'
              containerStyle={{ transform: [{translate: [-28 + (28 * i), 0, 1 - (i * 0.1)]}] }}
              small
              rounded
              source={{uri: people.image}}
              activeOpacity={0.7}
              />
          )
        }else if(i===5) {
          return (
          <View key={i} style={{ transform: [{translate: [(25 * i), 9, 0]}]  }}>
            <Text>{peopleGroup.length}</Text>
          </View>
          )
        }
      }
      )
    }
</View>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-14 09:02:19

在地图绘制之前使用Array.slice

代码语言:javascript
复制
peopleGroup
.slice(0, 5) // creates a copy of original, 5 items long
.map(...) // subsequent operations work on the copy

塔达!

票数 37
EN

Stack Overflow用户

发布于 2018-01-14 09:06:47

如何破坏.map函数?

不可能,我们不能破坏#array.map,它将为数组的每个元素运行。

为了解决您的问题,您可以先使用切片,然后使用map,然后使用切片数组的前5个元素,然后运行映射。

如下所示:

代码语言:javascript
复制
peopleGroup.slice(0,5).map((people, i) => {
    return (...)
}
票数 4
EN

Stack Overflow用户

发布于 2018-01-14 09:22:59

而不是使用.slice.map,这将创建另一个循环。

您可以使用.reduce,这样您就可以用一个循环(更好的性能)来执行逻辑。

不同的是,.map必须返回相同长度的数组,其中.reduce实际上可以返回任何内容。

代码语言:javascript
复制
  data.reduce((result, current, i) => {
    if (i < 5) {
      result.push(<div>{current}</div>);
    }
    return result;
  }, [])

运行示例:

代码语言:javascript
复制
const data = [1, 2, 3, 4, 5, 6, 7];

const App = () => (
  <div>
    {data.reduce((result, current, i) => {
      if (i < 5) {
        result.push(<div>{current}</div>);
      }
      return result;
    }, [])}
  </div>
);

ReactDOM.render(<App />, document.getElementById('root'));
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48248067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档