如何在Map函数中获取下一个元素?

11

我想在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”时,我需要获取下一个元素。
怎么做呢?

可能是重复问题 - user202729
使用map函数的第二个参数表示索引,当你找到'H'时,访问index+1 - Hassan Imam
1
可能是在映射数组时检查下一个项属性的重复问题。 - user202729
1个回答

25

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

  • 当前项目的值;
  • 当前项目的索引;
  • 调用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。如有需要,请测试该变量以避免错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接