我有一个有序的对象数组,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,我正在考虑关闭此问题以避免冗余。
答案 0 :(得分:1)
这是无聊的旧迭代比更令人兴奋的新技术更容易(和更高性能)的情况之一。
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;
(我不完全确定您为什么要将数组转换为伪链表,但我认为您有理由......)