在Javascript中以模块方式循环遍历数组

时间:2018-03-07 20:27:11

标签: javascript reactjs ecmascript-6

我有一个有序的对象数组,myBros。我希望每个人在数组中获得自己的索引(我将其存储为myPlace)并存储下一个的ID,最后一个对象存储第一个的ID。

下面的代码导致每个对象存储最后一个对象的ID,而不是下一个对象的ID。从积极的方面来说,最后一个对象存储了第一个对象的ID。

编辑:对不起,我应该更具体一点 - 这个函数存在于一个对象(一个React组件)中,它有一些道具,其中一个是id。 getNextBroId返回基于组件索引的值。

我做错了什么?

编辑:根据Daniel Beck的建议重新编写代码,仍然遇到同样的问题。

for (let i = 0; i < myBros.length - 1; i++) {
    myBros[i].nextBroId = myBros[i + 1]._id;
}
myBros[myBros.length - 1].nextBroId = myBros[0]._id;
const myPlace = myBros.findIndex(p => p._id === id);
const getNextBroId = () => {
    return myBros[myPlace].nextBroId;
};

编辑:我已在此处发布了整个组件:React-cycling through components in an array,我正在考虑关闭此问题以避免冗余。

1 个答案:

答案 0 :(得分:1)

这是无聊的旧迭代比更令人兴奋的新技术更容易(和更高性能)的情况之一。

&#13;
&#13;
var myBros = [
  {_id: "a"},
  {_id: "b"},
  {_id: "c"},
  {_id: "d"},
  {_id: "e"}
]

// step through all but last element in the array, link each one to the next
for (var i = 0; i < myBros.length - 1; i++) {
  myBros[i].nextBroId = myBros[i + 1]._id; 
}

// link the last one back to the first
myBros[myBros.length - 1].nextBroId = myBros[0]._id;

// and we're done
console.log(myBros);
&#13;
&#13;
&#13;

(我不完全确定您为什么要将数组转换为伪链表,但我认为您有理由......)