地图功能React中的定位

Posted

技术标签:

【中文标题】地图功能React中的定位【英文标题】:Positioning in Map function React 【发布时间】:2022-01-23 18:38:00 【问题描述】:

我有一个简单的问题,我有点卡住了。我有一个数组,我想在一个点使用一半数组,在其他地方使用一半数组。所以我正在使用地图功能,我有点卡住了如何在地图功能中使用定位。我想在某一点渲染数组的一部分,在另一点渲染另一半。

例如我有一个数组:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8];

我想在两个不同的地方填充它。

   array.map((item, index) => 
        return (
        //here i want 1,2,3,4
          <li > item </li>
      )
    
    
    
    array.map((item, index) => 
        return (
        //here i want 5,6,7,8
          <li > item </li>
      )
    

【问题讨论】:

改用numbers.filter 您可以使用索引在地图函数中使用 if/else 条件。 【参考方案1】:

您可以使用.slice 将您的数组拆分为两个数组,然后在每个数组上使用.map(),见下文

const numbers = [1, 2, 3, 4, 5, 6, 7, 8];

const array1 = numbers.slice(0, Math.floor(numbers.length/2))
const array2 = numbers.slice(Math.floor(numbers.length / 2))

console.log(array1)
console.log(array2)

//array1.map(...)
//and..
//array2.map(...)

【讨论】:

【参考方案2】:

您可以通过两种方式完成此操作:使用 CSS,或将数组分成两半。

使用 CSS

const numbers = [1, 2, 3, 4, 5, 6, 7, 8];

const App = () =>
(
  <div className="grid">
    
      numbers.map((n) => (
        <div>n</div>
      ))
    
  </div>
);

// Render it
ReactDOM.render(<App />, document.getElementById('react'));
.grid 
  display: grid;
  grid-template-columns: repeat(4, 1fr);


.grid div 
  display: grid;
  justify-content: center;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="react"></div>

使用 JS

const numbers = [1, 2, 3, 4, 5, 6, 7, 8];

const splitArr = (arr) =>
  ((half) => [arr.slice(0, half), arr.slice(-half)])
  (Math.ceil(arr.length / 2))


const App = () =>
(
  <div className="flex">
    
      splitArr(numbers).map((arr) => (
        <div className="row">
          
            arr.map((n) => (
              <div>n</div>
            ))
          
        </div>
      ))
    
  </div>
);

// Render it
ReactDOM.render(<App />, document.getElementById('react'));
.flex 
  display: flex;
  flex-direction: column;
  flex: 1;


.row 
  display: flex;
  flex: 1;
  justify-content: space-evenly;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="react"></div>

【讨论】:

【参考方案3】:

在这种情况下,您必须使用过滤器。不是地图 对于第一部分,您可以使用这样的过滤器:

    numbers.filter((it, idx) => 
        return idx < (numbers.length /2) && <li > item </li>
    )

第二个你可以使用这个:

    numbers.filter((it, idx) => 
        return idx + 1 > (numbers.length /2) && it
    )

【讨论】:

不,因为您的filter 不会像您认为的那样返回&lt;li&gt;item&lt;/li&gt;,如果您的返回计算结果为真值,它将返回当前迭代中的值,即来自原始数组。 .map() 正确使用的函数【参考方案4】:

你需要这样的东西吗?

import React from 'react';

const Home = (props) => 
  const numbers = [1, 2, 3, 4, 5, 6, 7, 8];
  return(
    <div>
      numbers.map((item, index) => (index <= numbers.length/2) ? (<li>item</li>):null)
      numbers.map((item, index) => (index > numbers.length/2) ? (<li>item</li>):null)
    </div>
  );


export default Home;

【讨论】:

以上是关于地图功能React中的定位的主要内容,如果未能解决你的问题,请参考以下文章

浅谈百度地图的简单开发之结合方向传感器实现定位功能

高德地图收不到品牌定位怎么回事

高德地图为啥定位不到我现在的位置

react amap 高德地图中多点定位,图标自定义

地图和定位功能的实现-篇幅略大,手机慎入

怎样使用定位功能?百度地图、知道?