【问题标题】:How to get the next element on Map function?如何获取 Map 函数的下一个元素?
【发布时间】:2018-09-02 21:40:38
【问题描述】:

我正在尝试在 React native 上制作一些坐标平面功能。但是我遇到了一个问题,我不知道如何获取数组中的下一个元素。

这是我的数组:

[
{"M":["0","0"]},
{"H":"100"},
{"V":"0"},
{"H":"100"},
{"V":"100"},
{"H":"0"},
{"V":"100"},
{"H":"0"},
{"V":"0"},
]

这是我的功能:

const rotate = (pathArray, angle) =>{
    if (angle > 0){
        let vCordinate;
        return pathArray.map((cordinate)=>{
            if(Object.entries(cordinate)[0][0] == "M"){
                let mCordinate = Object.entries(cordinate)[0][1];
                mCordinate[0] = (parseInt(mCordinate[0]) * Math.cos(angle)) - (parseInt(mCordinate[1]) * Math.sin(angle));
                mCordinate[1] = (parseInt(mCordinate[1]) * Math.cos(angle)) + (parseInt(mCordinate[0]) * Math.sin(angle));
                return {[Object.entries(cordinate)[0][0]]: mCordinate};
            }
            //LOGIC TO GET NEXT ELEMENT
            if(Object.entries(cordinate)[0][0] == "H"){
                let hCordinate = Object.entries(cordinate)[0][1];
                vCordinate = Object.entries(cordinate)[0][1]
                return {[Object.entries(cordinate)[0][0]]: vCordinate};
            }
            if(Object.entries(cordinate)[0][0] == "V"){
                return {[Object.entries(cordinate)[0][0]]: vCordinate};
            }
        })
    }
    return pathArray;
}

在这一点上,当我点击“H”时,我需要获取下一个元素。

如何做到这一点?

【问题讨论】:

标签: javascript arrays react-native ecmascript-6


【解决方案1】:

map 方法的回调接受 3 个参数:

  • 当前项目值;
  • 当前项目索引;
  • 数组map 被调用。

因此,您可以使用索引来获取下一个元素值:

var newArray  = myArray.map(function(value, index, elements) {
  var next = elements[index+1];
  // do something
});

var newArray  = myArray.map(function(value, index) {
  var next = myArray[index+1];
  // do something
});

注意,next 变量的值可能是undefined。如果需要,测试变量以防止错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2020-04-22
    • 2012-12-21
    • 2018-05-28
    • 2015-09-01
    相关资源
    最近更新 更多